QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#532092 | #3199. Passwords | rlc202204 | AC ✓ | 14ms | 4548kb | C++14 | 2.3kb | 2024-08-25 00:03:31 | 2024-08-25 00:03:31 |
Judging History
answer
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 25;
const int M = 1005;
const int S = 26;
const int mod = 1000003;
int ch[M][S] = {{0}}, fail[M] = {0}, f[M] = {0};
int tot = 0;
void insrt(string &s) {
int cur = 0;
for (auto i: s) {
if (!ch[cur][i - 'a'])
ch[cur][i - 'a'] = ++tot;
cur = ch[cur][i - 'a'];
}
f[cur] = 1;
}
int q[M] = {0}, fr, ba;
void build() {
fr = 1, ba = 0;
for (int i = 0; i < S; i++)
if (ch[0][i])
q[++ba] = ch[0][i];
while (fr <= ba) {
int x = q[fr++];
for (int i = 0; i < S; i++)
if (!ch[x][i])
ch[x][i] = ch[fail[x]][i];
else {
fail[ch[x][i]] = ch[fail[x]][i];
q[++ba] = ch[x][i];
}
}
for (int i = 1; i <= ba; i++)
f[q[i]] |= f[fail[q[i]]];
}
int dp[N][M][2][2][2] = {{{{{0}}}}};
void add(int &x, int y) {
x = (x + y) % mod;
}
int A, B, m;
/*
0 1 3 5 7
o i e s t
*/
vector<int> res;
int main() {
cin >> A >> B >> m;
for (int i = 1; i <= m; i++) {
string s;
cin >> s;
insrt(s);
}
build();
res.push_back('o' - 'a');
res.push_back('i' - 'a');
res.push_back('e' - 'a');
res.push_back('s' - 'a');
res.push_back('t' - 'a');
dp[0][0][0][0][0] = 1;
for (int i = 0; i < B; i++) {
for (int j = 0; j <= tot; j++) {
for (int k = 0; k < S; k++)
if (!f[ch[j][k]]) {
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
add(dp[i + 1][ch[j][k]][1][y][z], dp[i][j][x][y][z]);
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
add(dp[i + 1][ch[j][k]][x][y][1], dp[i][j][x][y][z]);
}
for (auto k: res)
if (!f[ch[j][k]]) {
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
add(dp[i + 1][ch[j][k]][x][1][z], dp[i][j][x][y][z]);
}
for (int k = 0; k < 10; k++)
if (k != 0 && k != 1 && k != 3 && k != 5 && k != 7) {
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
add(dp[i + 1][0][x][1][z], dp[i][j][x][y][z]);
}
}
}
int ans = 0;
for (int i = A; i <= B; i++)
for (int j = 0; j <= tot; j++)
add(ans, dp[i][j][1][1][1]);
cout << ans << endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3616kb
input:
3 5 9 swerc icpc fbi cia bio z hi no yes
output:
607886
result:
ok single line: '607886'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
4 5 0
output:
887311
result:
ok single line: '887311'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
3 5 1 a
output:
223848
result:
ok single line: '223848'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
4 5 10 a c e g i k m o q s
output:
178702
result:
ok single line: '178702'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
3 4 26 a b c d e f g h i j k l m n o p q r s t u v w x y z
output:
0
result:
ok single line: '0'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
3 5 8 fcup porto swerc ola hello no yes abc
output:
839906
result:
ok single line: '839906'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
3 5 10 attc tcag gtc gta aaaa ccaaa ttcg gacga aagcg cagd
output:
796623
result:
ok single line: '796623'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3852kb
input:
3 5 12 a baz cbaz dcbaz hendb endb ndb b nn onno ayesb yes
output:
511313
result:
ok single line: '511313'
Test #9:
score: 0
Accepted
time: 1ms
memory: 3616kb
input:
4 6 50 hph h pp hhphpp p ph hh hhpp hpphhp hhp ppphp pph pppp hphph phhphh hpph hphphp phphp phphh hhh pphp phhh pphh ppphh phphpp phh hpphhh hhhh pphph phpp phph hhhhph hpphh hp hpp pphpp hhhp phhp hhph ppph hppph phhhh ppppp hppp hhphph hphphh ppp hhhpph hpppp hppphp
output:
344974
result:
ok single line: '344974'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3680kb
input:
3 6 50 wqog sjqr fcbqax y xpwwi j gklgnc bmhark qgaj uvfpwz hi nallwx obms oigkq uehl r fq uqe rbhbt luzt jxyu fgvrk s gidv jlagzj cyshm ixjxu vkhjh ibbw k zq b knav ayxeqm rncdp kzqdww cdkkw fjl hy l qsakh bgju yzx sf emuc lq wcaba wla yal e
output:
188830
result:
ok single line: '188830'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3668kb
input:
3 10 25 axaxxx txrj tt tttaxjr xxxrtj xttarxxxtx xaxjr r jrrjrxjr aarajar txt x rt xatxt xttj xjja xra jxt ra taaxra aj rjr xxaxaaj xxttrjxa xxtajx
output:
687381
result:
ok single line: '687381'
Test #12:
score: 0
Accepted
time: 3ms
memory: 4036kb
input:
3 15 35 vxkqvdexdx zxvee mvozimqezvxqoe qev vxiovmmdxq xozzzm iqexzoxqievxze deezqqdkek zvzodz veizidqkemvziox zmzidxidezve koxdvdm ozzmii xvedxqmm dqziexoe qdmo dokieiodoqzdzix dke odqo imeemxvexxzov veeixmvdq vdveoqv ixmezo dqoeexizokemovo dddzeokm ozizmq izieei kexzkqmxoqkeo dkoez voqmoidimzvm qq...
output:
841929
result:
ok single line: '841929'
Test #13:
score: 0
Accepted
time: 3ms
memory: 3812kb
input:
10 15 45 aa rrraxrarrkakxaa kr rkrarxrkxrark kkkakarxrr rrkakarxrr axxxaxakkkxxkrk aaxrrkarxaxaxk xrxa aaaakxxkaraar rxrr axraaaaxxxxkxk xx rrxx xakkxrrx k rkarrxkkrx rara xxaarakax raraakkaaaxa kxxr kraxkaxaar x xkkkkxxkk rkkarr krxkkxkrxkxkxax araxkkrx arar aaa xaarkxarkxxk xrk krrkkxrxa xaxrkxrax...
output:
322551
result:
ok single line: '322551'
Test #14:
score: 0
Accepted
time: 6ms
memory: 4184kb
input:
18 18 50 pnn pnppplnlpnnllpplnn pllnpppl llpppplnppnnppnlp lln lplnnnlnplnn nlllppllplppplll lllppp plplplpllpppnllll ppplpnplnnpp ppnpnnn nnnnpnnppnnnnpn npllnppnnl pnpnl pnpll npll lnlnlpppplpnplpnp npnlnnlnllpplpp nlplpp nnppnllppllpnnll ppnlnlnplnllnl pnplplplllpnnp lpnnppnlppnnn ppnlpnp nplnpnp...
output:
389309
result:
ok single line: '389309'
Test #15:
score: 0
Accepted
time: 6ms
memory: 4208kb
input:
4 19 50 psmx wwpswpqqxymyytyx xp ywmasrmddtppwawdy yzsjgzjxazggprsnpa nngnqdgqpmpzjwt dznrtstpmrmyzzra qryzdgjpdxtpxypatzs zmyn wasyxsppqjpxzaradzw xmyngqtrgnpdnmywy spypzgmxq dxwrtnpg pqp jpqsxrqgxjrq dpwqs agzayxgqzwjwztr xpqtzxry rx njrr ajgwdwr ymjysjzgnqpwdxzjj pqazyxxryrmtzwmxn ms tqqrztnrrtzn...
output:
684686
result:
ok single line: '684686'
Test #16:
score: 0
Accepted
time: 0ms
memory: 3844kb
input:
3 20 0
output:
998674
result:
ok single line: '998674'
Test #17:
score: 0
Accepted
time: 10ms
memory: 4148kb
input:
3 20 50 gwogsnogslv dlwngqvnvvjod qvvwssloqlvjwld lgndnlwosjsdg qqjqsdolwddjs dnoojjwwnlodd sdsojlnvgwjqoslnno jddnnjwqvnjq solvgologqndgosjdgn vwdolvqsndnowoqwd qlwlogwqwndqlqsgjvvw onovnlwdowvwwn sddsvgonqnjlgd svsdlngdsndlqnqddjg dgvsngdsgq ggvdloloqsssnogv lsngqgodgwjosodq wsqvoolnqsjd joswdggll...
output:
507317
result:
ok single line: '507317'
Test #18:
score: 0
Accepted
time: 14ms
memory: 4548kb
input:
3 20 50 ploynntcvajxahnainmo vhgcnjxidsfbudfxozng vjsljvycjydraaxmfwec nkpkhtwpjqdserapecfw tufqdnmuodfrxlfafcia aerajvorujijmgebsvyt layevdwrdirqdbjiycgf suwgmhmnvqyhsilqyaok orundlohsmzncfbjifwg xallxiszxkxuahclwdjc uqnioqwsglsgdjjltvsn nkcgdhkhjeaocrncoyxu jcylizcagdlqfqyknmuc yqojefflbxbszhftdnj...
output:
17312
result:
ok single line: '17312'