UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#210870#2069. 组合技mygr10066ms9184kbC++1.5kb2024-08-08 09:03:352024-08-08 12:34:29

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Max=1e3+5,inf=0x7fffffffffff;

struct trie{
public:
	struct node{
		int ch[4],add,fail;
	}p[Max];
	int tot=0;
	void add(string a,int num)
	{
		int now=0;
		for(int i=0;i<=(int)a.size()-1;i++)
		{
			if(!p[now].ch[a[i]-'0'])
				p[now].ch[a[i]-'0']=++tot;
			now=p[now].ch[a[i]-'0'];
		}
		p[now].add+=num;
	}
	queue<int> q;
	void getfail()
	{
		for(int i=0;i<=3;i++)
			if(p[0].ch[i])
				q.push(p[0].ch[i]);
		while(!q.empty())
		{
			int now=q.front();
			q.pop();
			p[now].add+=p[p[now].fail].add;
			for(int i=0;i<=3;i++)
			{
				if(p[now].ch[i])
				{
					p[p[now].ch[i]].fail=p[p[now].fail].ch[i];
					q.push(p[now].ch[i]);
				}
				else
					p[now].ch[i]=p[p[now].fail].ch[i];
			}
		}
	}
}t;
int ch[900],dp[Max][Max];
int n,m,k;
string a;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	ch['A']=0;ch['B']=1;ch['X']=2;ch['Y']=3;
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a>>k;
		for(int j=0;j<=(int)a.size()-1;j++)
		{
			a[j]=ch[(int)a[j]]+'0';
		}
		t.add(a,k);
	}
	t.getfail();
	for(int i=0;i<=m;i++)
		for(int j=0;j<=t.tot;j++)
			dp[i][j]=-inf;
	dp[0][0]=0;
	for(int i=1;i<=m;i++)
	{
		for(int j=0;j<=t.tot;j++)
		{
			for(int k=0;k<=3;k++)
			{
				dp[i][t.p[j].ch[k]]=max(dp[i][t.p[j].ch[k]],dp[i-1][j]+t.p[t.p[j].ch[k]].add);
			}
		}
	}
	int ans=0;
	for(int i=0;i<=t.tot;i++)
		ans=max(ans,dp[m][i]);
	cout<<ans;
}



详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 20
Accepted

Test #1:

score: 20
Accepted
time: 0ms
memory: 1320kb

input:

10 10
BA 476
BA 463
AAABAAX 2044
BBAXXA 934
B 128
BAXBB 886
AXB 784
AXABX 917
XXXABBA 905
XB 343

output:

7483

result:

ok "7483"

Test #2:

score: 0
Accepted
time: 1ms
memory: 1316kb

input:

10 10
XAA 427
AAAXXA 1790
XAX 817
XAAXA 1298
AXA 761
A 101
AXXXA 980
AAXA 859
XAA 741
AAXXAAA 868

output:

10808

result:

ok "10808"

Test #3:

score: 0
Accepted
time: 0ms
memory: 1324kb

input:

10 10
AXXX 614
AX 511
BB 229
YBA 875
XBA 858
YXY 510
BBBAB 644
XBYB 819
YBBABXBXY 1119
YYXAB 699

output:

4124

result:

ok "4124"

Subtask #2:

score: 20
Accepted

Test #4:

score: 20
Accepted
time: 0ms
memory: 5620kb

input:

1000 1
BABBXXBXBBABBXBBXXAAAAXBXXBXXXXXAAAAAAXXABBBB 13224

output:

290928

result:

ok "290928"

Test #5:

score: 0
Accepted
time: 0ms
memory: 5324kb

input:

1000 1
XBBXBXB 1019

output:

202781

result:

ok "202781"

Test #6:

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

input:

1000 1
AXXXXAX 1317

output:

262083

result:

ok "262083"

Test #7:

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

input:

1000 1
XAXAXAA 1944

output:

276048

result:

ok "276048"

Test #8:

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

input:

1000 1
AXXXXXXXAA 2626

output:

291486

result:

ok "291486"

Test #9:

score: 0
Accepted
time: 0ms
memory: 6380kb

input:

1000 1
XAXXAXXAXAAAAAAAAXXAXAAAAXAAXAAAXXAXXAAAXAAAAAXAXXXAAXXXXXAAAAAXXXAXXXAXAXXAXAAXAAAXXAAAXXAAA...

output:

261282

result:

ok "261282"

Test #10:

score: 0
Accepted
time: 4ms
memory: 6604kb

input:

1000 1
AXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXX...

output:

3135384

result:

ok "3135384"

Test #11:

score: 0
Accepted
time: 0ms
memory: 6568kb

input:

1000 1
AXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXXAXXAXAXAXX...

output:

4406220

result:

ok "4406220"

Subtask #3:

score: 25
Accepted

Test #12:

score: 25
Accepted
time: 0ms
memory: 5400kb

input:

1000 2
AXAXAAAXXX 1808
AXXAXXAXX 2462

output:

814922

result:

ok "814922"

Test #13:

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

input:

1000 2
XXAX 786
AAAAXXA 2076

output:

357750

result:

ok "357750"

Test #14:

score: 0
Accepted
time: 0ms
memory: 6700kb

input:

1000 2
XAXAAXXXXAXXAXXAXAAXXXAAXXAXAAXXXAAXAAXAAAXAXXXAXAXXAXAAXAXXXXXXXAAXAAXXAXAAAAAXXAXXXAAXXAAAX...

output:

233942

result:

ok "233942"

Test #15:

score: 0
Accepted
time: 4ms
memory: 6724kb

input:

1000 2
AXYBAYXBYABXYABXYXYABXYBXYAXBYABXYABXYABAYBAYXYXYYXYXAYBXABXYAXBXAYXBAYBXYAYBAYXBYABXXAYBXYAB...

output:

358972

result:

ok "358972"

Subtask #4:

score: 20
Accepted

Test #16:

score: 20
Accepted
time: 0ms
memory: 5728kb

input:

1000 10
BAAABX 1583
AXAXXXA 1407
BAAXAXXXXXX 3235
XBBBAAABBA 2201
BBBAAX 702
BBXB 500
BXAXX 845
XBXB...

output:

620010

result:

ok "620010"

Test #17:

score: 0
Accepted
time: 0ms
memory: 5580kb

input:

1000 20
B 134
AAB 599
BAXXA 961
AB 327
XXAB 1152
BBAB 896
XBXBX 766
BBA 735
XBA 332
BBXAB 1015
AX 44...

output:

2032001

result:

ok "2032001"

Test #18:

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

input:

1000 20
AAA 678
AXX 833
XXAX 1168
X 268
AXXX 909
XA 253
XXXXX 1186
AAA 470
AAXX 954
AAXX 1117
AAXA 4...

output:

2317027

result:

ok "2317027"

Test #19:

score: 0
Accepted
time: 0ms
memory: 5572kb

input:

1000 13
AXAXXAA 1385
XXAAXX 1477
AXXAX 826
AXXAX 1172
XAX 402
XAAAXA 678
XAAAX 984
XAAXX 1233
AXAXX ...

output:

1079605

result:

ok "1079605"

Test #20:

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

input:

1000 24
AA 337
BBAA 836
BY 521
XY 443
AA 339
ABX 507
XBX 816
YXXABA 1339
BB 327
BY 355
Y 249
YXXYA 5...

output:

859641

result:

ok "859641"

Test #21:

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

input:

1000 7
YXABXYAXBAB 57341
XYAXBABAAXB 43263
AXBXYXABAAB 12364
YXABAABBBAX 64231
BBBAXAXYYABX 61236
YY...

output:

7989045

result:

ok "7989045"

Subtask #5:

score: 15
Accepted

Test #22:

score: 15
Accepted
time: 3ms
memory: 5276kb

input:

1000 1000
A 78269
A 53414
A 63394
A 74863
A 59909
A 68791
A 66457
A 63577
A 58099
A 64203
A 53163
A ...

output:

64665588000

result:

ok "64665588000"

Test #23:

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

input:

1000 100
XBXXABABAXXXBAXAAA 2542
BAXBAXAXXXA 1604
AXXBBAAXXX 1964
XBXABAXXBAA 1325
AXAAAAXX 1794
AAA...

output:

711270

result:

ok "711270"

Test #24:

score: 0
Accepted
time: 0ms
memory: 7472kb

input:

1000 300
AYBBXYX 805
YA 329
AAA 601
AA 221
BBB 809
BAYXYY 1114
AB 443
BBABYX 1650
AXYAX 915
AAX 571
...

output:

6877587

result:

ok "6877587"

Test #25:

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

input:

1000 20
XXAAXXXXAXXXXXXXAXAXXXXAXAXAXXAXXAAAXAAXXAAAAXAXAAXA 15008
AXXXAAAAAXAAXXXAAXXXXAXAXXAXAXAAA...

output:

302591

result:

ok "302591"

Test #26:

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

input:

1000 25
XXAAXXXXAXXXXXXXAXAXXXXAXAXAXXAXXAAAXAAXXAAAAXAXAAXA 15008
AXXXAAAAAXAAXXXAAXXXXAXAXXAXAXAAA...

output:

448011

result:

ok "448011"

Test #27:

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

input:

1000 20
XYBAXYBXAXXYBAXYBAXAAABXYXYBYXXYYXXBAXABXYBAXXAYYX 43723
XBAXABXYBAXXAYYXYAXBAYBXYYYBAXYBYAB...

output:

1338096

result:

ok "1338096"