QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#19057 | #2113. Zbalansowane słowa | Elegia | 5 | 188ms | 115448kb | C++17 | 4.1kb | 2022-01-27 21:27:12 | 2022-09-06 08:15:28 |
Judging History
answer
/*
_/_/_/_/ _/_/_/_/_/ _/_/_/
_/ _/ _/ _/ _/
_/ _/ _/ _/ _/
_/ _/ _/ _/ _/
_/ _/ _/ _/ _/ _/
_/ _/ _/ _/ _/ _/_/
_/_/_/_/ _/_/ _/_/_/_/_/
_/_/_/_/ _/ _/ _/ _/
_/ _/ _/ _/ _/_/ _/_/
_/ _/ _/_/ _/ _/_/ _/
_/ _/ _/ _/ _/ _/
_/ _/ _/_/ _/ _/
_/ _/ _/ _/ _/ _/
_/_/_/_/ _/ _/ _/ _/
_/_/_/_/_/ _/_/_/_/_/ _/_/_/_/_/
_/ _/ _/
_/ _/ _/
_/ _/ _/_/_/_/
_/ _/ _/
_/ _/ _/
_/ _/_/_/_/_/ _/_/_/_/_/
_/_/_/_/_/ _/_/_/_/_/ _/_/_/_/_/
_/ _/ _/
_/ _/ _/
_/ _/ _/_/_/_/
_/ _/ _/
_/ _/ _/
_/ _/_/_/_/_/ _/_/_/_/_/
*/
#include <cassert>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <cctype>
#include <algorithm>
#include <random>
#include <bitset>
#include <queue>
#include <functional>
#include <set>
#include <map>
#include <unordered_map>
#include <vector>
#include <chrono>
#include <iostream>
#include <iomanip>
#include <limits>
#include <numeric>
#define LOG(FMT...) fprintf(stderr, FMT)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template <class T>
istream& operator>>(istream& is, vector<T>& v) {
for (T& x : v)
is >> x;
return is;
}
template <class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
if (!v.empty()) {
os << v.front();
for (int i = 1; i < v.size(); ++i)
os << ' ' << v[i];
}
return os;
}
const int P = 998244353;
int norm(int x) { return x >= P ? (x - P) : x; }
void add(int& x, int y) { if ((x += y) >= P) x -= P; }
void sub(int& x, int y) { if ((x -= y) < 0) x += P; }
void exGcd(int a, int b, int& x, int& y) {
if (!b) {
x = 1;
y = 0;
return;
}
exGcd(b, a % b, y, x);
y -= a / b * x;
}
int inv(int a) {
int x, y;
exGcd(a, P, x, y);
return norm(x + P);
}
void fam(int& x, int y, int z) { x = (x + y * (ull)z) % P; }
int quo2(int x) { return ((x & 1) ? (x + P) : x) >> 1; }
const int _ = 300005;
uniform_int_distribution<int> uid(0, P - 1);
int base[26], ord[_][26], dro[26], cnt[26];
char s[_];
int main() {
#ifdef ELEGIA
freopen("test.in", "r", stdin);
int nol_cl = clock();
#endif
ios::sync_with_stdio(false);
cin.tie(nullptr);
for (int i = 0; i != 26; ++i) base[i] = uid(rng);
int B = uid(rng);
cin >> (s + 1);
int N = strlen(s + 1);
memset(ord[0], -1, sizeof(ord[0]));
int hsh = 0;
for (int i = 1; i <= N; ++i) {
add(hsh, base[s[i] - 'a']); ++cnt[s[i] - 'a'];
memcpy(ord[i], ord[i - 1], sizeof(ord[i]));
int pos = 0; while (ord[i][pos] != s[i] - 'a' && ord[i][pos] != -1) ++pos;
ord[i][pos] = s[i] - 'a';
rotate(ord[i], ord[i] + pos, ord[i] + pos + 1);
}
memset(dro, -1, sizeof(dro));
unordered_map<int, int> mp; mp.reserve(N * 26);
ull ans = 0;
for (int i = N; i; --i) {
int myn = 26, mask = 0, bmask = 0;
for (int j = 0; j != 26; ++j) {
if (ord[i][j] == -1) break;
myn = min(myn, ord[i][j]);
mask |= 1 << ord[i][j];
add(bmask, base[ord[i][j]]);
int v = (hsh + (P - cnt[myn]) * (ull)bmask + B * (ull)mask) % P;
++mp[v];
}
sub(hsh, base[s[i] - 'a']); --cnt[s[i] - 'a'];
int pos = 0; while (dro[pos] != -1 && dro[pos] != s[i] - 'a') ++pos;
dro[pos] = s[i] - 'a'; rotate(dro, dro + pos, dro + pos + 1);
mask = bmask = 0; myn = 26;
for (int j = 0; j != 26; ++j) {
if (dro[j] == -1) break;
myn = min(myn, dro[j]);
mask |= 1 << dro[j]; add(bmask, base[dro[j]]);
int v = (hsh + (P - cnt[myn]) * (ull)bmask + B * (ull)mask) % P;
ans += mp[v];
}
}
cout << ans << '\n';
#ifdef ELEGIA
LOG("Time: %dms\n", int ((clock()
-nol_cl) / (double)CLOCKS_PER_SEC * 1000));
#endif
return 0;
}
详细
Subtask #1:
score: 1
Accepted
Test #1:
score: 1
Accepted
time: 2ms
memory: 3612kb
input:
aabbabcccba
output:
28
result:
ok single line: '28'
Test #2:
score: 0
Accepted
time: 2ms
memory: 3608kb
input:
a
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3688kb
input:
bc
output:
3
result:
ok single line: '3'
Test #4:
score: 0
Accepted
time: 2ms
memory: 3724kb
input:
bbc
output:
5
result:
ok single line: '5'
Test #5:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
bcaab
output:
10
result:
ok single line: '10'
Test #6:
score: 0
Accepted
time: 2ms
memory: 3776kb
input:
ccaccaacaa
output:
27
result:
ok single line: '27'
Test #7:
score: 0
Accepted
time: 2ms
memory: 3588kb
input:
bcabaabbcbacbaccccbc
output:
57
result:
ok single line: '57'
Test #8:
score: 0
Accepted
time: 2ms
memory: 3620kb
input:
aaabaaababbaaaabaabb
output:
54
result:
ok single line: '54'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
cccccccccccccccccccc
output:
210
result:
ok single line: '210'
Test #10:
score: 0
Accepted
time: 2ms
memory: 3700kb
input:
bacacbabccbacabbcabb
output:
70
result:
ok single line: '70'
Test #11:
score: 0
Accepted
time: 2ms
memory: 3620kb
input:
bccaabbaccbaabcacbab
output:
68
result:
ok single line: '68'
Test #12:
score: 0
Accepted
time: 1ms
memory: 3696kb
input:
abbcccaaaabbbbbccccc
output:
65
result:
ok single line: '65'
Subtask #2:
score: 1
Accepted
Test #13:
score: 1
Accepted
time: 2ms
memory: 3800kb
input:
aabbbacbcbbcabababbaaacaaabccabcaaaabccabcbbbcbabaaabaacacbcccabccaacbbcacabbbaaaaaaaabccaabbabcaaa
output:
326
result:
ok single line: '326'
Test #14:
score: 0
Accepted
time: 2ms
memory: 3644kb
input:
cccbcaabccbbcaaaabcbbacccbcbaacbabcacbaccababcabcabaaacbccbaacbcbbabaccabcaaababccbbbcaccabbaacbacba
output:
513
result:
ok single line: '513'
Test #15:
score: 0
Accepted
time: 2ms
memory: 3800kb
input:
cababccabbacbacbcaabcabccbacbabacabccbacbacabacbcbacbaacbabcbcacbaacbcabcbaabcabcbaccabbacbcabacbacc
output:
1125
result:
ok single line: '1125'
Test #16:
score: 0
Accepted
time: 2ms
memory: 3724kb
input:
caacacabaabbbbccbccaabbccbabccbbcbbaaabacaaccbcbcaaccbbaacbaccbbacacbbaaabcbcacababbcacaaccbcbcabbab
output:
506
result:
ok single line: '506'
Test #17:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
abbcccaaaabbbbbccccccaaaaaaabbbbbbbbcccccccccaaaaaaaaaabbbbbbbbbbbccccccccccccaaaaaaaaaaaaabbbbbbbbb
output:
587
result:
ok single line: '587'
Subtask #3:
score: 1
Accepted
Test #18:
score: 1
Accepted
time: 0ms
memory: 3712kb
input:
cbbbaaccbaaccbbcacaaccabcaaccccbbbaacabcbcabcaccbbbcaacbcbccccbbbcaaaacbacacbaababbbbcbaaaccbcabbccc
output:
330
result:
ok single line: '330'
Test #19:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
aaabcbbcabacabaaacacbcbcbbacabbaaaaaabbacbacbbbbbcbaabcabcacbaabccbaacabccccbbabaaccbbabbbbbbcabbabc
output:
340
result:
ok single line: '340'
Test #20:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
bcabacccbababaacbcbbcaacabccbabbaccacacabbbacbaccbcababaccbcabbacacbaaabccacbbacbaabcaccbbbcabaacbcb
output:
726
result:
ok single line: '726'
Test #21:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
bacabcacbbaaccbbccbaabbccaacbacabbcabcacbabbaacaacbbccbaaccbcabcbbcababcacaacbacbbcaabbccaacbabcacba
output:
764
result:
ok single line: '764'
Subtask #4:
score: 1
Accepted
Test #22:
score: 1
Accepted
time: 3ms
memory: 4204kb
input:
cacabacbcbccbbbbcaccaabcabbbabbcccccccaccaccbacbaabbbcabccaccccaacabaabcacaccbcbcacbcabacccbccccbabbbcacababcbacaccbabccbacbbaaabccbaabcaaaabcaaacacbacabcabcabcabaaaccbbbcacacbbaaacaababaacacbacabcbcaabcbcabbaabcbccabaacaacaacaaacccaabbcaacabaaaccbcbabcbaccababbcbccbaccbbbcbcaaacbccbcabccabcaaaabbbb...
output:
12577
result:
ok single line: '12577'
Test #23:
score: 0
Accepted
time: 3ms
memory: 4340kb
input:
accbcbccccbcbbbaccbbbcccaccabccabccbcbcbcbbbacabaabaaabccacccbccacacacbbbbcccbababaacabaaccbccaccaaabbacbcbbbbababbbcccaaaabbbbbaacacbcaaccacacbcabcaccbbcaabaaccaacacaccabbbccccacacaccccabbcaabaacaacaabcacbccccaaacacbcbbaccaabcabcbbcaacbbcaccbbbaabbabaabbbcaccbaaaccbcabbbbcbaccccbbbbaaababaccacbbbba...
output:
11845
result:
ok single line: '11845'
Test #24:
score: 0
Accepted
time: 3ms
memory: 4384kb
input:
cabcbaabcabccbacababcacbabcbacbcabacbacacbbacabcbacbcacababccababccbacabcbabcaacbacbbcacbabacbcabaccbacabacbabcbaccababccababcabcbcabacbcaabcbaccabcbacbaabcacbbcacbaacbabcbcabaccabbaccabcababccbabaccabacbcbaabcacbacbbcaacbbacbaccabbcacbacababcabcacbacbcabbcabacbcaabcabcbacbcaabcbcacababcabcacbabccab...
output:
839557
result:
ok single line: '839557'
Test #25:
score: 0
Accepted
time: 3ms
memory: 4340kb
input:
babababaabbcbccbcbbcccacaacacababcaccababcbcaacabbcbaccaabbcababbabababbbbccbcccacaacaccacacaccaaccccbbbbcaabaabbbacbabaababbbbaaaccaacaacccabcccbbbbcbccbcccbbbcbcbabbaaaabbaaccaccaacaacaccaaacccaabbabaabbabbbcccccbcbbbbacabacbcbcabacbabbabaaaabbabbacccbbbbbcbbccccbaacacaccacacaccaacbbaaccbaacccaccb...
output:
116531
result:
ok single line: '116531'
Test #26:
score: 0
Accepted
time: 2ms
memory: 4316kb
input:
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
output:
2253000
result:
ok single line: '2253000'
Test #27:
score: 0
Accepted
time: 0ms
memory: 4228kb
input:
abbcccaaaabbbbbccccccaaaaaaabbbbbbbbcccccccccaaaaaaaaaabbbbbbbbbbbccccccccccccaaaaaaaaaaaaabbbbbbbbbbbbbbcccccccccccccccaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccc...
output:
81775
result:
ok single line: '81775'
Subtask #5:
score: 1
Accepted
Test #28:
score: 1
Accepted
time: 1ms
memory: 4308kb
input:
ccaaababaabcacacccaaabacaaabaacbcbaabacbcccccbcabcbcccaacbcacbbbcaaaabbcacabbbaacacbabbcaaabbbabcbaabbcbbcccbccaabaccbabccabccacbcbccababcaaabbbbbaacabbbcccccabaaaaacbaabbccccaacbabcbaaaaccbabccaabbaaaabbabbcccacbabcacaaacbacacccacbacacbbbbacbacaabbbcacbaabcababcbabbbaaaabaabaaacabbcccbabbbbbccabcac...
output:
12094
result:
ok single line: '12094'
Test #29:
score: 0
Accepted
time: 3ms
memory: 4100kb
input:
abcbaacaaacabaaacaaaccaabaaaccbcabaabcbcbabbbbcaaabcccccccacabbbcbcbbbaaacaaaaababcccaacbbabcccbbcbacababcbcbaacbbbbcbbcacbcbcaabbaababacccbabccaabcaabccbabccbcaccabbbababbbcabbaacabaaabacbacabbccccccbbccbaccbbbcbbbabbacabccaabbcaaccbaaaaabaacbcbbacbbcbaaabcbbbcaaaaaabccaabccabaabaaaaacbccbbcccbccab...
output:
12080
result:
ok single line: '12080'
Test #30:
score: 0
Accepted
time: 2ms
memory: 4224kb
input:
ccaaacbcbbabaccbabaaaaccbabaabcccabbacbabbaabbbaccccbbcaccbccabbaccbcbcaacbababacbcccaabbabbcbbaccaabcababbabbcccaaccaccaabcacaccabacbbcbababbcaabbccaaaabcccbbcbbcaacbbacabacabccbabbccacbcbabacaabbabaaccbcbcbccababbccbcababcaaaaccbbccaaaabaccbbccabaccaabbcaacbacbababccbccbbabaacbacbcabcaacbbababccab...
output:
146615
result:
ok single line: '146615'
Test #31:
score: 0
Accepted
time: 3ms
memory: 4180kb
input:
acbcabcabbccaabacacbccbababbaabcacabbccacbcbaacbbacbcabcbcaccababacabababccbbcacabcabcacabbcababcacbaccbcaabcabacbcbabcacabcabcabcabcaabbccbaabaccbcabbcabacbacbacbacccaaababcbbccbbacaacbababbcbcccaaabccbacbbacacbabaccbacabacbcbaccaacbcbbbaabcabcaabcabcabbcacccbbbbaacaaccababcacbabcabcabcccaaccbbbaba...
output:
460919
result:
ok single line: '460919'
Test #32:
score: 0
Accepted
time: 2ms
memory: 4232kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
1503501
result:
ok single line: '1503501'
Subtask #6:
score: 0
Wrong Answer
Test #33:
score: 0
Wrong Answer
time: 8ms
memory: 14468kb
input:
cbbcbacbbaacabcbabcccaccabbcbbbaccccbbccccabcacabacbbcbacacbcacbbcccbbbabbbabbbbacbacabcacabacbaccacaabaaacababaccbbbbccacbabbacabaabbbaaaabcccacccbabbbbacbbcbbbcbbcaacbccaccaaaccbabccbabbacbacbbcacbccbcaacbbbbbccccbaacacabbababaabacbcacbcaacbcacbbbbcbbacbbaaabaaabacbabbccbaccacbbbccacbcccccabbbaaba...
output:
135295
result:
wrong answer 1st lines differ - expected: '135289', found: '135295'
Subtask #7:
score: 0
Wrong Answer
Test #42:
score: 0
Wrong Answer
time: 45ms
memory: 40396kb
input:
acacbccaacbabcbbabcbcbbacbabbbbacccacaacbccbcaacaabaacbcabaccaccccaccbacbccccbaaccbccacccaccbabaccabbbbcccabcccbaaabbabbbbbcbbbcabcabbacacaaacccbacbbbcccabaaabcaabcbabbbcbbacaaccacaaabccbbbcccccccabaccaacabcababcbabaacbcbbabaaaccbccccbaabaccaaaabcabbbacaaabbbacbacaaacbacabbacaabcaaaaccbbaccccacbbaac...
output:
540529
result:
wrong answer 1st lines differ - expected: '540518', found: '540529'
Subtask #8:
score: 0
Wrong Answer
Test #51:
score: 0
Wrong Answer
time: 39ms
memory: 40392kb
input:
cacaccaabcccacaaacbbbabacbcbbcabcbccbcaccbcaabbbbccacccbbbbabcabcbacbacccababaabcbaababcaaaabbacbbbbccbaabcbacacbcbaccacbbcabbabbcaacbbcabbabaccacbbbccaabbbbaccccacabbaaaacbbaabacabccaaaacbcabcacabaaaccccbccbbaaabaaaaacaababccbacbbccabbbacccabbbabbbacaaacaaacaccaccaacbbaaaccbabbcccccababbccbabcaabab...
output:
538560
result:
wrong answer 1st lines differ - expected: '538547', found: '538560'
Subtask #9:
score: 0
Wrong Answer
Test #59:
score: 0
Wrong Answer
time: 186ms
memory: 115104kb
input:
acabcbaaaaacacbaaabbcccbcabcabcbbcabbcacbabccbcaabaacaabbbbacbacbabaccaccbaababcaccbacaaaccbccaacbbaabcbabccacacbacbcbbbccccbaacbcaacbbaaaabcaccbaaacabbcbaabcbcacbbbbabccbccaacbbccacacbacbcababcbacaaacbcccabbcbbbcaacabcbbcbbcccccaabcbccbccabacbbcccacbaccbbabbcbcbaaabaabcabacacbbbaabcccacbbacbcbccbab...
output:
1598792
result:
wrong answer 1st lines differ - expected: '1598274', found: '1598792'
Subtask #10:
score: 0
Wrong Answer
Test #69:
score: 0
Wrong Answer
time: 188ms
memory: 115448kb
input:
aabbaaababbcbcbaccbbaabcabcccccbbcbccccabaacccabbbccccabaabbccbbaabbcbaaacacccbbbaabbcaabcbcbaabaaacacaabccacbabacbcbcbbacbbbcccacabaccbcbcbbbbcaccbabbbacbcccccccbabbcbaacabbbabaaaacbcacacbaabbcbbcbabaacbaabccbcabbabbbbbaaaaaacaacaccacccbaaacabcbbaaaabaccabbabacbbbcabbbbbbbbacccbabbcbaacccccacaaacac...
output:
1461304
result:
wrong answer 1st lines differ - expected: '1461098', found: '1461304'