QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#358239#3176. Candy ChainPetroTarnavskyi#AC ✓11ms8024kbC++201.9kb2024-03-19 18:21:542024-03-19 18:21:57

Judging History

This is the latest submission verdict.

  • [2024-03-19 18:21:57]
  • Judged
  • Verdict: AC
  • Time: 11ms
  • Memory: 8024kb
  • [2024-03-19 18:21:54]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define RFOR(i, a, b) for(int i = (a) - 1; i >= (b); i--)
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second

typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;

const int N = 10'474;
const int ALP = 26;

int g[N][ALP];
int sz = 1;

int add(string s)
{
	int v = 0;
	FOR (i, 0, SZ(s))
	{
		if (g[v][s[i] - 'a'] == -1)
			g[v][s[i] - 'a'] = sz++;
		v = g[v][s[i] - 'a'];
	}
	return v;
}

const int INF = 1e9;
const int N2 = 74;

int dp[N2][N2];
int dp2[N2][N];
int cst[N];
string s;

void f(int L)
{
	int n = SZ(s);
	FOR (i, 0, N2) FOR (j, 0, N) dp2[i][j] = -INF;
	dp2[L][0] = 0;
	FOR (i, L, n)
	{
		FOR (v, 0, sz)
		{
			if (dp2[i][v] == -INF)
				continue;
			int u = g[v][s[i] - 'a'];
			if (u != -1)
			{
				dp2[i + 1][u] = max(dp2[i + 1][u], dp2[i][v]);
			}
			FOR (j, i + 1, n + 1)
				dp2[j][v] = max(dp2[j][v], dp2[i][v] + dp[i][j]);
		}
	}
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	FOR(i, 0, N) FOR(j, 0, ALP) g[i][j] = -1;
	fill(cst, cst + N, -INF);
	
	cin >> s;
	int C;
	cin >> C;
	vector<string> v(C);
	VI cost(C);
	FOR (i, 0, C)
	{
		cin >> v[i] >> cost[i];
		FOR (t, 0, 2)
		{
			int a = add(v[i]);
			cst[a] = max(cst[a], cost[i]);
			reverse(ALL(v[i]));
		}
	}
	FOR (i, 0, N2) FOR (j, 0, N2) dp[i][j] = -INF;
	int n = SZ(s);
	RFOR (L, n, 0)
	{
		f(L);
		FOR (R, L + 1, n + 1)
		{
			FOR (u, 0, sz)
			{
				dp[L][R] = max(dp[L][R], dp2[R][u] + cst[u]);
			}
		}
	}
	VI ans(n + 1, -INF);
	ans[0] = 0;
	FOR (i, 0, n)
	{
		ans[i + 1] = max(ans[i + 1], ans[i]);
		FOR (j, i + 1, n + 1)
			ans[j] = max(ans[j], ans[i] + dp[i][j]);
	}
	cout << ans[n] << '\n';
	
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 5ms
memory: 7988kb

input:

acmicpcxxxacmzacmzacmzmca
5
icpc 5
cpci 1
acm 2
acmacm 10
xxx 0

output:

21

result:

ok single line: '21'

Test #2:

score: 0
Accepted
time: 2ms
memory: 7976kb

input:

aaabaaa
3
aaaaaa 10
ba 5
b 1

output:

11

result:

ok single line: '11'

Test #3:

score: 0
Accepted
time: 3ms
memory: 7816kb

input:

abbabbaabbbaaaabbbbaaaaabababbbbaabbabbb
38
a 1
aa 1
aaa 3
aaaa 10
aaaaa 3
aaaaaa 23
aaaaaaa 21
aaaaaaaa 35
aaaaaaaaa 58
aaaaaaaaaa 60
aaaaaaaaaaa 19
aaaaaaaaaaaa 130
aaaaaaaaaaaaa 44
aaaaaaaaaaaaaa 70
aaaaaaaaaaaaaaa 220
aaaaaaaaaaaaaaaa 109
aaaaaaaaaaaaaaaaa 155
aaaaaaaaaaaaaaaaaa 35
aaaaaaaaaaaaa...

output:

372

result:

ok single line: '372'

Test #4:

score: 0
Accepted
time: 6ms
memory: 7792kb

input:

ghfadbaehfdaagebhdfaaggghahcfdddcadfcdbb
152
a 1
aa 1
aaa 3
aaaa 10
aaaaa 3
aaaaaa 23
aaaaaaa 21
aaaaaaaa 35
aaaaaaaaa 58
aaaaaaaaaa 60
aaaaaaaaaaa 19
aaaaaaaaaaaa 130
aaaaaaaaaaaaa 44
aaaaaaaaaaaaaa 70
aaaaaaaaaaaaaaa 220
aaaaaaaaaaaaaaaa 109
aaaaaaaaaaaaaaaaa 155
aaaaaaaaaaaaaaaaaa 35
aaaaaaaaaaaa...

output:

82

result:

ok single line: '82'

Test #5:

score: 0
Accepted
time: 3ms
memory: 7720kb

input:

ghfadbaehfdaagebhdfaaggghahcfdddcadfcdbb
87
a 1
aa 2
aaa 3
aaaa 10
aaaaa 3
aaaaaa 23
aaaaaaa 21
aaaaaaaa 35
aaaaaaaaa 58
aba 8
b 1
ba 3
bb 4
bba 7
bbb 4
bbbb 14
bbbbb 20
bbbbbb 4
bbbbbbb 30
bbbbbbbb 42
bbbbbbbbb 35
c 1
ca 2
cba 6
cc 3
ccc 5
cccc 3
ccccc 21
cccccc 36
ccccccc 11
cccccccc 22
ccccccccc ...

output:

93

result:

ok single line: '93'

Test #6:

score: 0
Accepted
time: 7ms
memory: 7672kb

input:

eddcbbceddfcceedbbdaccaafededddbaebbebdb
200
a 1
aa 2
aaa 3
aab 5
aac 4
aad 7
aae 6
aaf 4
ab 2
abb 1
abc 2
abd 4
abe 4
abf 5
ac 5
acb 2
acc 7
acd 3
ace 6
ad 1
adb 6
adc 1
add 7
ade 2
ae 2
aeb 1
aec 2
aed 6
aee 6
af 6
afb 5
afc 8
afd 4
afe 8
b 1
ba 3
bab 3
bac 3
bad 6
bae 4
baf 3
bb 2
bbb 7
bbc 3
bbd...

output:

113

result:

ok single line: '113'

Test #7:

score: 0
Accepted
time: 3ms
memory: 7792kb

input:

ijlhohmognbblqbiljqlmqfmdmldhceplgnifqnl
200
a 1
aa 3
aaa 3
aaaa 10
ab 5
ac 1
ad 5
ae 6
af 6
ag 6
ah 5
ai 1
b 1
ba 6
bb 4
bbb 3
bbbb 3
bc 3
bd 4
be 5
bf 5
bg 1
bh 6
bi 4
c 1
ca 2
cb 2
cc 6
ccc 4
cccc 2
cd 6
ce 1
cf 5
cg 5
ch 3
ci 5
d 1
da 3
db 1
dc 5
dd 1
ddd 4
dddd 13
de 2
df 2
dg 6
dh 1
di 2
e 1
e...

output:

87

result:

ok single line: '87'

Test #8:

score: 0
Accepted
time: 8ms
memory: 8024kb

input:

ijlhohmognbblqbiljqlmqfmdmldhceplgnifqnlefepfnghnf
200
a 1
aa 2
aaa 6
aaaa 8
ab 4
ac 4
ad 6
ae 2
af 5
ag 1
ah 6
ai 3
b 1
ba 3
bb 3
bbb 6
bbbb 14
bc 6
bd 6
be 5
bf 6
bg 6
bh 6
bi 1
c 1
ca 2
cb 5
cc 4
ccc 5
cccc 13
cd 4
ce 2
cf 2
cg 1
ch 6
ci 5
d 1
da 2
db 5
dc 6
dd 1
ddd 4
dddd 15
de 3
df 1
dg 3
dh 4...

output:

125

result:

ok single line: '125'

Test #9:

score: 0
Accepted
time: 8ms
memory: 7720kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
45
a 1
aa 2
aaa 6
aaaa 8
aaaaa 10
aaaaaa 13
aaaaaaa 17
aaaaaaaaa 20
aaaaaaaaaa 25
aaaaaaaaaaa 35
aaaaaaaaaaaa 50
aaaaaaaaaaaaa 70
aaaaaaaaaaaaaa 85
aaaaaaaaaaaaaaa 100
aaaaaaaaaaaaaaaa 130
aaaaaaaaaaaaaaaaa 200
aaaaaaaaaaaaaaaaaa 250
aaaaaaaaaaaaaaa...

output:

10900

result:

ok single line: '10900'

Test #10:

score: 0
Accepted
time: 9ms
memory: 7824kb

input:

befccaecfeceffabcaaafbdfbdbddabfbbcadefedaccccfaee
200
a 1
aa 2
aaa 3
aab 5
aac 4
aad 7
aae 6
aaf 4
ab 2
abb 1
abc 2
abd 4
abe 4
abf 5
ac 5
acb 2
acc 7
acd 3
ace 6
ad 1
adb 6
adc 1
add 7
ade 2
ae 2
aeb 1
aec 2
aed 6
aee 6
af 6
afb 5
afc 8
afd 4
afe 8
b 1
ba 3
bab 3
bac 3
bad 6
bae 4
baf 3
bb 2
bbb 7...

output:

142

result:

ok single line: '142'

Test #11:

score: 0
Accepted
time: 8ms
memory: 7724kb

input:

ccnncbhjjcgelafgoadhcfdhiicfehjnnnconabgbgfbcccboe
200
a 1
aa 2
aaa 6
aaaa 8
ab 4
ac 4
ad 6
ae 2
af 5
ag 1
ah 6
ai 3
b 1
ba 3
bb 3
bbb 6
bbbb 14
bc 6
bd 6
be 5
bf 6
bg 6
bh 6
bi 1
c 1
ca 2
cb 5
cc 4
ccc 5
cccc 13
cd 4
ce 2
cf 2
cg 1
ch 6
ci 5
d 1
da 2
db 5
dc 6
dd 1
ddd 4
dddd 15
de 3
df 1
dg 3
dh 4...

output:

136

result:

ok single line: '136'

Test #12:

score: 0
Accepted
time: 11ms
memory: 7728kb

input:

aaabaababababbbaabababaabbbbbbbbbbabbaabaaaaaababb
200
a 1
aa 14
aaa 61
aaaaaaa 1862
aaaaaaaba 4487
aaaab 523
aaaababa 2374
aaaababbaa 1846
aaaabb 394
aaaabbab 3158
aaaabbaba 950
aaaabbabbb 851
aaab 147
aaaba 31
aaabaa 909
aaabaab 2120
aaabaabbbb 2071
aaabab 396
aaababbba 4561
aaababbbaa 5407
aaabba...

output:

35596

result:

ok single line: '35596'

Test #13:

score: 0
Accepted
time: 8ms
memory: 7668kb

input:

abaaabaabababaabaabbbbaabbbaabbbababababbbbabaaaaa
200
a 1
aa 14
aaa 72
aaaa 251
aaaaa 635
aaaaaa 1242
aaaaaaabb 5887
aaaaaabab 5919
aaaaaababb 1304
aaaaab 781
aaaaabab 152
aaaaabb 1254
aaaabaabb 2428
aaaababb 3786
aaaabb 244
aaaabba 1240
aaaabbbaa 5384
aaabaa 238
aaabaaaaba 547
aaabab 569
aaababb 1...

output:

36275

result:

ok single line: '36275'

Test #14:

score: 0
Accepted
time: 11ms
memory: 7668kb

input:

aabbaabbababaaaabbbbabbaaababaaaaaaabaaababbbbaabb
200
a 1
aa 14
aaa 55
aaaa 230
aaaaa 166
aaaaaa 457
aaaaaabbb 486
aaaaababaa 1772
aaaab 626
aaaaba 390
aaaabaaab 1997
aaaabaab 786
aaaabaaba 2007
aaaababa 3822
aaaababba 3465
aaaabba 771
aaaabbba 2171
aaaabbbbab 4912
aaab 210
aaaba 239
aaabababa 1710...

output:

39966

result:

ok single line: '39966'

Test #15:

score: 0
Accepted
time: 10ms
memory: 7724kb

input:

babbbaaabbaaaaabbbaaaabaaabbaaaabbbabbaaaabaababbb
200
a 1
aa 13
aaa 18
aaaa 158
aaaaa 507
aaaaaa 457
aaaaaaa 66
aaaaab 312
aaaaabbb 1839
aaaab 95
aaaaba 1045
aaaabab 565
aaaabb 1157
aaaabbba 1200
aaab 176
aaaba 235
aaabaaab 829
aaabab 856
aaababa 1089
aaabb 361
aaabba 293
aaabbaaa 1746
aaabbabb 294...

output:

20495

result:

ok single line: '20495'

Test #16:

score: 0
Accepted
time: 9ms
memory: 7724kb

input:

acdadcacabaddbaacdbadabdcbadcacdaadbcdbabadabdbcbc
200
a 1
aa 18
aaa 80
aaab 47
aaac 195
aaad 230
aab 55
aaba 64
aabb 158
aabc 95
aac 83
aad 77
aadb 126
aadc 137
ab 5
aba 18
abb 42
abbd 35
abc 49
abcb 144
abcc 53
abcd 192
abd 60
abda 55
abdc 89
abdd 263
ac 13
aca 60
acaa 113
acac 153
acb 25
acba 240...

output:

3067

result:

ok single line: '3067'