Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33592 林芳菲 【J】T4 C++ 运行出错 0 0 MS 256 KB 1349 2024-10-14 13:43:24

Tests(0/20):


#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <vector> using namespace std; int n; int c[5000010][26]; string s; struct node { int l, r; bool operator < (const node & b) const { if (l != b.l) return l < b.l; return r < b.r; } }; int main() { freopen("string.in", "r", stdin); freopen("string.out", "w", stdout); cin >> s; n = s.size(); s = " " + s; for (int i = 1; i <= n; i++) { for (int j = 0; j <= 25; j++) c[i][j] = c[i - 1][j]; c[i][s[i] - 'a'] = i; } long long ans = 0; for (int i = 1; i <= n; i++) { vector<node> v; for (int j = 0; j <= 25; j++) { int r = c[i][j]; if (r == 0) continue; int l = c[r - 1][j] + 1; if (l <= r) v.push_back((node){l, r}); } sort(v.begin(), v.end()); int y = 0; for (int j = 0; j < v.size(); j++) { int l = v[j].l; int r = v[j].r; if (l > y) ans += r - l + 1; else if (r > y) ans += r - y; y = max(y, r); } } cout << ans << endl; fclose(stdin); fclose(stdout); return 0; }


测评信息: