📜  acpc (1)

📅  最后修改于: 2023-12-03 14:59:10.954000             🧑  作者: Mango

ACPC

ACPC是指ACM/ICPC(国际大学生程序设计竞赛)的比赛平台,是一种流行的算法竞赛训练和评测系统。

特点
  • 高效的测试评测系统,针对复杂的算法和数据结构。
  • 友好的题目描述和测试数据组。
  • 活跃的社区和丰富的学习资源。
使用方式
  • 注册并登录ACPC官网或者使用其他支持ACPC的在线评测平台。
  • 解决评测系统提供的各种算法和数据结构题目。
  • 通过提交代码并得到系统评测结果,提高自己的算法竞赛实力。
示例代码(C++)

下面是一段 ACPC 的示例代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6+10;

char str[N];
int len[N], mx, idx;

int main() {
    while (~scanf("%s", str+1)) {
        int n = strlen(str+1);
        if (n == 1 && str[1] == '#') break;

        memset(len, 0, sizeof(len));
        len[0] = -1;
        mx = idx = 0;
        for (int i = 1; i <= n; i++) {
            if (str[i] == 'a') {
                len[i] = 1;
            } else {
                len[i] = len[i-1] - 1;
            }
            while (len[i] <= 0 && i + len[i] <= n) {
                if (str[i-len[i]-1] == 'a') {
                    len[i] += len[i-len[i]-1] + 2;
                } else {
                    len[i] += len[i-len[i]-1] - 2;
                }
            }
            if (len[i] > mx) {
                mx = len[i];
                idx = i;
            }
        }

        printf("%d\n", (idx-mx+1)*2-1);
    }

    return 0;
}

以上是示例代码,用于处理字符串中最长的回文子序列,返回其长度。