QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#300986 | #2668. 论战捆竹竿 | yhddd | 100 ✓ | 234ms | 24364kb | C++14 | 2.4kb | 2024-01-09 09:42:45 | 2024-01-09 09:42:45 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;
const int maxn=500010;
const int inf=2e18;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
return x*f;
}
bool Mbe;
int n,m;
char c[maxn];
int nxt[maxn],st[maxn],tp;
int dis[maxn],p,res[maxn];
int gcd(int a,int b){
if(!a||!b)return a+b;
if(a%b==0)return b;
return gcd(b,a%b);
}
int q[maxn],t;
void bfs(int len){
int g=gcd(p,len);
for(int i=0;i<p;i++)res[i]=dis[i];
for(int i=0;i<len;i++)dis[i]=inf;
for(int i=0;i<p;i++){
int tmp=res[i]%len;
dis[tmp]=min(dis[tmp],res[i]);
}
for(int i=0;i<g;i++){
q[t=1]=i;
int tmp=(i+p)%len;
while(tmp!=i){q[++t]=tmp;tmp=(tmp+p)%len;}
for(int j=2;j<=t;j++)dis[q[j]]=min(dis[q[j]],dis[q[j-1]]+p);
dis[i]=min(dis[i],dis[q[t]]+p);
for(int j=2;j<=t;j++)dis[q[j]]=min(dis[q[j]],dis[q[j-1]]+p);
}
p=len;
}
int hh,tt,qq[maxn];
void change(int a,int nw,int len){
int g=gcd(p,nw);
for(int i=0;i<g;i++){
q[t=1]=i;
int tmp=(i+nw)%p;
while(tmp!=i){q[++t]=tmp;tmp=(tmp+nw)%p;}
tmp=1;
for(int j=2;j<=t;j++)if(dis[q[j]]<dis[q[tmp]])tmp=j;
for(int j=1;j<=t;j++)res[j]=q[j];
for(int j=tmp;j<=t;j++)q[j-tmp+1]=res[j];
for(int j=1;j<tmp;j++)q[j+t-tmp+1]=res[j];
qq[hh=tt=1]=1;
for(int j=2;j<=t;j++){
while(hh<=tt&&j-qq[hh]>len)hh++;
dis[q[j]]=min(dis[q[j]],dis[q[qq[hh]]]+a+nw*(j-qq[hh]));
while(hh<=tt&&dis[q[qq[tt]]]+nw*(j-qq[hh])>dis[q[j]])tt--;
qq[++tt]=j;
}
}
}
void work(){
n=read();m=read()-n;
scanf("%s",c+1);
if(m<0){printf("0\n");return ;}
for(int i=2,j=0;i<=n;i++){
while(j&&c[i]!=c[j+1])j=nxt[j];
if(c[i]==c[j+1])j++;
nxt[i]=j;
}
int x=nxt[n];tp=0;
while(x){
st[++tp]=n-x;
x=nxt[x];
}
st[++tp]=n;st[tp+1]=0;
for(int i=0;i<n;i++)dis[i]=inf;
dis[0]=0;p=n;
int l=1;
while(l<=tp){
int r=l;
while(st[r+1]-st[r]==st[l+1]-st[l])++r;
bfs(st[l]);
if(r>tp)break;
change(st[l],l==r?0:st[l+1]-st[l],r-l);
l=r;
}
int ans=0;
for(int i=0;i<p;i++)if(dis[i]<=m)ans+=(m-dis[i])/p+1;
printf("%lld\n",ans);
}
bool Med;
int T;
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
// ios::sync_with_stdio(0);
// cin.tie(0);cout.tie(0);
// cerr<<(&Mbe-&Med)/1048576.0<<" MB\n";
T=read();
while(T--)work();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 5
Accepted
time: 1ms
memory: 3744kb
input:
5 3 10 aab 6 10 bbbaaa 6 10 aaaaab 3 10 bba 3 10 baa
output:
3 1 1 3 3
result:
ok 5 number(s): "3 1 1 3 3"
Test #2:
score: 5
Accepted
time: 1ms
memory: 3652kb
input:
5 5 20 aabaa 6 20 bbabab 4 20 aaaa 5 20 abbbb 7 20 abbbaba
output:
14 6 17 4 5
result:
ok 5 number(s): "14 6 17 4 5"
Test #3:
score: 5
Accepted
time: 1ms
memory: 3744kb
input:
5 100 1000000000000000000 pubuapdogqmtxofzuvbvugsmeolvkwcszhiyxlzfgzgkcigttarutfmcxazyebvqtxbaaolirkjsysbpeqcnnbmewyiflnfrdxji 100 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 100 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaa...
output:
10000000000000000 999999999999999901 999999999999999832 999999999999999715 0
result:
ok 5 number(s): "10000000000000000 999999999999...9999999832 999999999999999715 0"
Test #4:
score: 5
Accepted
time: 1ms
memory: 3652kb
input:
5 100 1000000000000000000 shzjdvpdipbefflocbzemtahxhqsmsfkgeglhkdlaojllfcuzezkairuyubwvraoehlhzinzeglirkqsellamtfqsjqumokegxzx 100 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 100 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaa...
output:
10000000000000000 999999999999999901 999999999999999838 0 999999999999999847
result:
ok 5 number(s): "10000000000000000 999999999999...9999999838 0 999999999999999847"
Test #5:
score: 5
Accepted
time: 1ms
memory: 3700kb
input:
5 1000 1000000000000000000 yqfvrrdlnfhymfwvujysliaqsnpkkyoinhtkcasjsmmcxzopcuxihrrlphehsymvxsqbwokwpxdlmoewxncojujmzngxgcbijsesyxdbleiekfsgvhvooeqbxqltddskmuqvhopgjjrsaohmhjilifimfybzwchrqconquqqsfuqqqldityagdpgcfsvgbdpumfdalxujcyzhzqyfwriwjgwovydysqfuvbzqetndazvlkgbjzedafrccfizfpkpuqrhstwtadlkhcbhv...
output:
1000000000000000 999999999999999001 999999999999998482 999999999999998098 999999999999997859
result:
ok 5 number(s): "1000000000000000 9999999999999...999999998098 999999999999997859"
Test #6:
score: 5
Accepted
time: 1ms
memory: 3872kb
input:
5 1000 1000000000000000000 pixtqjtglhxfwbonlhwvddksgnuqjswinhunxhghfnuqirqfnnkioeydhkpbrqxkgkplqzheddxmutzvocqconzicazgfmbyztjnppcstvnqavyouodmgkvwhdxihckhyoxcamxqenjughhusufxyiiivadirmdsqbadxkfaekchfvsukwxbkdejyraihqdndthzuvqblixchamwzmhuenyfpetkgljsnrighareizgfvmtlgxeljluwoklcikmaefcsebndhiqbqpeuv...
output:
1000000000000000 999999999999999001 999999999999998488 0 999999999999997533
result:
ok 5 number(s): "1000000000000000 9999999999999...9999998488 0 999999999999997533"
Test #7:
score: 5
Accepted
time: 7ms
memory: 5872kb
input:
5 50000 100000 xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...
output:
10001 24995 6004 34963 0
result:
ok 5 number(s): "10001 24995 6004 34963 0"
Test #8:
score: 5
Accepted
time: 7ms
memory: 5804kb
input:
5 50000 100000 xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...
output:
10001 24994 6004 34969 1009
result:
ok 5 number(s): "10001 24994 6004 34969 1009"
Test #9:
score: 5
Accepted
time: 11ms
memory: 5624kb
input:
5 50000 100000 xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...
output:
10001 24995 6004 34969 1009
result:
ok 5 number(s): "10001 24995 6004 34969 1009"
Test #10:
score: 5
Accepted
time: 10ms
memory: 5624kb
input:
5 50000 100000 xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...
output:
10001 24997 6004 34963 1007
result:
ok 5 number(s): "10001 24997 6004 34963 1007"
Test #11:
score: 5
Accepted
time: 21ms
memory: 6616kb
input:
5 70000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999894988 499999999999924964 999999999999888298 999999999999533441 999999999999823805
result:
ok 5 number(s): "999999999999894988 49999999999...999999533441 999999999999823805"
Test #12:
score: 5
Accepted
time: 25ms
memory: 6584kb
input:
5 70000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999894988 499999999999934948 999999999999888292 999999999999533441 499999999999927943
result:
ok 5 number(s): "999999999999894988 49999999999...999999533441 499999999999927943"
Test #13:
score: 5
Accepted
time: 18ms
memory: 7704kb
input:
5 100000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999849979 499999999999894861 999999999999838298 499999998750274995 999999999999647812
result:
ok 5 number(s): "999999999999849979 49999999999...998750274995 999999999999647812"
Test #14:
score: 5
Accepted
time: 27ms
memory: 7804kb
input:
5 100000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999849988 499999999999894861 999999999999838292 999999999999369217 499999999999887884
result:
ok 5 number(s): "999999999999849988 49999999999...999999369217 499999999999887884"
Test #15:
score: 5
Accepted
time: 18ms
memory: 7660kb
input:
5 100000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999849976 166666666666641659 999999999999838304 499999998750274995 999999999999719421
result:
ok 5 number(s): "999999999999849976 16666666666...998750274995 999999999999719421"
Test #16:
score: 5
Accepted
time: 28ms
memory: 7756kb
input:
5 100000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999849982 499999999999894839 999999999999838292 999999999999370145 999999999999687718
result:
ok 5 number(s): "999999999999849982 49999999999...999999370145 999999999999687718"
Test #17:
score: 5
Accepted
time: 223ms
memory: 24196kb
input:
5 500000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999249988 249999999999783292 999999999999171633 999999999996226049 999999999998333136
result:
ok 5 number(s): "999999999999249988 24999999999...999996226049 999999999998333136"
Test #18:
score: 5
Accepted
time: 206ms
memory: 24348kb
input:
5 500000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999249979 249999999999783302 999999999999171627 999999999996226049 999999999998649255
result:
ok 5 number(s): "999999999999249979 24999999999...999996226049 999999999998649255"
Test #19:
score: 5
Accepted
time: 215ms
memory: 24364kb
input:
5 500000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999249985 499999999999466547 999999999999171633 999999999996226049 999999999998649207
result:
ok 5 number(s): "999999999999249985 49999999999...999996226049 999999999998649207"
Test #20:
score: 5
Accepted
time: 234ms
memory: 24316kb
input:
5 500000 1000000000000000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
999999999999249976 249999999999783302 999999999999171645 999999999996226049 999999999998649333
result:
ok 5 number(s): "999999999999249976 24999999999...999996226049 999999999998649333"
Extra Test:
score: 0
Extra Test Passed