QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#358745 | #6635. Strange Keyboard | ucup-team134 | WA | 498ms | 36272kb | C++17 | 1.6kb | 2024-03-19 23:32:25 | 2024-03-19 23:32:26 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=1000050;
const int inf=1e9+7;
const int M=5005;
char s[N];
int go[N][26],tsz,root,best[N],ptr[N],len[N],mn[M];
void Add(char*s,int n,int k){
if(!root)root=++tsz;
int now=root;
for(int i=0;i<n;i++){
if(!go[now][s[i]-'a']){
go[now][s[i]-'a']=++tsz;
best[tsz]=inf;
}
now=go[now][s[i]-'a'];
if((n-1-i)%k!=0){
best[now]=min(best[now],(n-1-i)/k+2+mn[k-(n-1-i)%k]);
}else{
best[now]=min(best[now],(n-1-i)/k+1);
}
}
}
int dp[M];
char t[M];
int mnl[M];
int main(){
int q;
scanf("%i",&q);
while(q--){
int n,k;
scanf("%i %i",&n,&k);
for(int i=0;i<k;i++)mnl[i]=inf;
for(int i=1;i<=n;i++){
scanf("%s",s+ptr[i]);
len[i]=strlen(s+ptr[i]);
ptr[i+1]=ptr[i]+len[i];
mnl[len[i]%k]=min(mnl[len[i]%k],len[i]);
}
for(int i=1;i<k;i++)mn[i]=inf;
vector<int> ids;
for(int i=1;i<k;i++)if(mnl[i]!=inf)ids.pb(i);
for(int i:ids){
for(int j=0;j<k*2;j++){
int x=j%k;
int w=1+mnl[i]/k+(x+i>=k);
if(mn[(x+i)%k]>mn[x]+w){
mn[(x+i)%k]=mn[x]+w;
}
}
}
for(int i=1;i<=n;i++){
Add(s+ptr[i],len[i],k);
}
scanf("%s",t+1);
int m=strlen(t+1);
for(int i=1;i<=m;i++)dp[i]=inf;
for(int i=0;i<m;i++){
int now=root;
for(int j=i+1;j<=m;j++){
now=go[now][t[j]-'a'];
if(!now)break;
dp[j]=min(dp[j],dp[i]+best[now]);
}
}
if(dp[m]==inf)printf("-1\n");
else printf("%i\n",dp[m]);
root=0;
for(int i=1;i<=tsz;i++){
for(int j=0;j<26;j++){
go[i][j]=0;
}
}
tsz=0;
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7868kb
input:
2 2 3 defgh abc abcde 1 1 a b
output:
3 -1
result:
ok 2 number(s): "3 -1"
Test #2:
score: 0
Accepted
time: 52ms
memory: 7148kb
input:
1 1413 4867 yumnkkghwtqnhpmmsbfwypcwudihegsvtdaykueuqozagpgdnhbwzoqrqswyctzonwmjdjmmpyzbyihhpyznmqltcuckqmcybbdafoexqztxhzlfjowznisnxtgoiqjztogldyegajmegalqgawrzotuntocmsagvkzdnwhmaewuxiuhvintpzwyrkgapnmegpveyuuorrfvrfakjyetfaoqtvwghlslsvmahrkvzkwpaviufknrpuapicqdnn yumnkkghwtqnhpmmsbfwypcwudihegsvt...
output:
10
result:
ok 1 number(s): "10"
Test #3:
score: 0
Accepted
time: 161ms
memory: 6148kb
input:
10 446 4905 afigcjhcgagabbiccehjcjajigghgbjjadccicghggijjdfeciaccgheedjdhgfjdfdbgidbbdjaiehhceeehchhabhaideggjbjajgfgicfdggahhbjgdebccbgbiedhehaebdccdfdffaacjcfbgjeegbahhbgcdjigijajheidchbddicehhhjbeiaajgedhdcjiefdgdbjjfaegheeidieheecaicciaajbabiidcecefgiicccdidegeica afigcjhcgagabbiccehjcjajigghgbj...
output:
3 2 2 11 6 5 1 1 1 1
result:
ok 10 numbers
Test #4:
score: 0
Accepted
time: 498ms
memory: 7964kb
input:
100 140 4879 baabaababbababbaabababaaababbbabbbbbbabbababbbabbbbabbbbbbaabbbbbbbbabaabbbaabaabbbaabbabaabaabbbabbbababbbaabbabaaaaabbaaabbbabb baa baabaababbababbaabababaaababbbabbbbbbabbab baabaababbababbaabababaaabab baabaababbababbaabababaaababbbabbb baabaababbababbaabababaaababbbabbbbbbabbababbb...
output:
1 1 1 1 3 1 1 1 1 1 1 3 2 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 4 3 2 1 2 1 1 1 1 1 2 1 1 1 3 1 1 1 2 1 1 1 2 3 1 1 1 2 1 1 1 1 1 1 1 1 3 2 3 1 3 1 1 2 1 2 3 2 1 1 1 3 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 4 1
result:
ok 100 numbers
Test #5:
score: 0
Accepted
time: 58ms
memory: 36272kb
input:
1 7 4864 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
205
result:
ok 1 number(s): "205"
Test #6:
score: -100
Wrong Answer
time: 48ms
memory: 33080kb
input:
10 7 4923 baaabbabbbabbbbbabaabaabababbabbaaaabbaaabbbbabbaaababaaaaabaaabbabbbabbaaaabbaabbbaabbaaababaaababbabaababbaababbabaaabaabbaaabaaaababbabbabaabaabaabaabbbbaabaabbbaababbabbabaaaabbbaabbbaaaabaaaaababbaabaaaaababbbbaaaabbbaababbaabbabaabaaaaababaababaabaaaaabababababbabbbabababaaabaababbaa...
output:
5494 228 4164 549 129 372 475 534 336 288
result:
wrong answer 1st numbers differ - expected: '4287', found: '5494'