ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#210872 | #2069. 组合技 | mygr | 100 | 33ms | 9184kb | C++ | 1.5kb | 2024-08-08 09:06:58 | 2024-08-08 12:34:35 |
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: 0ms
memory: 1320kb
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: 1320kb
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: 5320kb
input:
1000 1 XBBXBXB 1019
output:
202781
result:
ok "202781"
Test #6:
score: 0
Accepted
time: 0ms
memory: 5320kb
input:
1000 1 AXXXXAX 1317
output:
262083
result:
ok "262083"
Test #7:
score: 0
Accepted
time: 0ms
memory: 5324kb
input:
1000 1 XAXAXAA 1944
output:
276048
result:
ok "276048"
Test #8:
score: 0
Accepted
time: 0ms
memory: 5348kb
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: 6600kb
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: 5404kb
input:
1000 2 AXAXAAAXXX 1808 AXXAXXAXX 2462
output:
814922
result:
ok "814922"
Test #13:
score: 0
Accepted
time: 0ms
memory: 5356kb
input:
1000 2 XXAX 786 AAAAXXA 2076
output:
357750
result:
ok "357750"
Test #14:
score: 0
Accepted
time: 4ms
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: 2ms
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: 2ms
memory: 5464kb
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: 0ms
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: 0ms
memory: 5752kb
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: 0ms
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: 4ms
memory: 9168kb
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: 7468kb
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: 3ms
memory: 9180kb
input:
1000 20 XXAAXXXXAXXXXXXXAXAXXXXAXAXAXXAXXAAAXAAXXAAAAXAXAAXA 15008 AXXXAAAAAXAAXXXAAXXXXAXAXXAXAXAAA...
output:
302591
result:
ok "302591"
Test #26:
score: 0
Accepted
time: 7ms
memory: 9184kb
input:
1000 25 XXAAXXXXAXXXXXXXAXAXXXXAXAXAXXAXXAAAXAAXXAAAAXAXAAXA 15008 AXXXAAAAAXAAXXXAAXXXXAXAXXAXAXAAA...
output:
448011
result:
ok "448011"
Test #27:
score: 0
Accepted
time: 3ms
memory: 9184kb
input:
1000 20 XYBAXYBXAXXYBAXYBAXAAABXYXYBYXXYYXXBAXABXYBAXXAYYX 43723 XBAXABXYBAXXAYYXYAXBAYBXYYYBAXYBYAB...
output:
1338096
result:
ok "1338096"