QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#358555 | #6635. Strange Keyboard | ucup-team134 | WA | 51ms | 37280kb | C++17 | 1.6kb | 2024-03-19 21:02:43 | 2024-03-19 21:02:44 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
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'];
best[now]=min(best[now],(n-1-i)/k+1+mn[(n-1-i)%k]);
}
}
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]);
Add(s+ptr[i],len[i],k);
ptr[i+1]=ptr[i]+len[i];
mnl[len[i]%k]=min(mnl[len[i]%k],len[i]);
}
priority_queue<pair<int,int>> pq;
for(int i=1;i<k;i++)mn[i]=inf;
pq.push({0,0});
while(pq.size()){
int x=pq.top().second;
int d=-pq.top().first;
pq.pop();
if(d!=mn[x])continue;
for(int i=1;i<k;i++){
if(mnl[i]!=inf){
int w=1+mnl[i]/k+(x+i>=k);
if(dp[(x+i)%k]>dp[x]+w){
dp[(x+i)%k]=dp[x]+w;
pq.push({-dp[(x+i)%k],(x+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: 5840kb
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: 8ms
memory: 7024kb
input:
1 1413 4867 yumnkkghwtqnhpmmsbfwypcwudihegsvtdaykueuqozagpgdnhbwzoqrqswyctzonwmjdjmmpyzbyihhpyznmqltcuckqmcybbdafoexqztxhzlfjowznisnxtgoiqjztogldyegajmegalqgawrzotuntocmsagvkzdnwhmaewuxiuhvintpzwyrkgapnmegpveyuuorrfvrfakjyetfaoqtvwghlslsvmahrkvzkwpaviufknrpuapicqdnn yumnkkghwtqnhpmmsbfwypcwudihegsvt...
output:
10
result:
ok 1 number(s): "10"
Test #3:
score: 0
Accepted
time: 6ms
memory: 5980kb
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: 3ms
memory: 7880kb
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: -100
Wrong Answer
time: 51ms
memory: 37280kb
input:
1 7 4864 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
6
result:
wrong answer 1st numbers differ - expected: '205', found: '6'