QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#107268 | #2668. 论战捆竹竿 | myee | 100 ✓ | 293ms | 16748kb | C++11 | 3.4kb | 2023-05-20 18:20:37 | 2023-05-20 18:20:41 |
Judging History
answer
// 那就是希望。
// 即便需要取模,也是光明。
#ifndef MYEE
#pragma GCC optimize("Ofast")
#endif
#include <algorithm>
#include <random>
#include <stdio.h>
#include <vector>
typedef long long llt;
typedef unsigned uint;typedef unsigned long long ullt;
typedef bool bol;typedef char chr;typedef void voi;
typedef double dbl;
template<typename T>bol _max(T&a,T b){return(a<b)?a=b,true:false;}
template<typename T>bol _min(T&a,T b){return(b<a)?a=b,true:false;}
template<typename T>T lowbit(T n){return n&-n;}
template<typename T>T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<typename T>T lcm(T a,T b){return(a!=0||b!=0)?a/gcd(a,b)*b:(T)0;}
template<typename T>T exgcd(T a,T b,T&x,T&y){if(b!=0){T ans=exgcd(b,a%b,y,x);y-=a/b*x;return ans;}else return y=0,x=1,a;}
template<typename T>T power(T base,T index,T mod)
{
T ans=1%mod;
while(index)
{
if(index&1)ans=ans*base%mod;
base=base*base%mod,index>>=1;
}
return ans;
}
// Heaven and Earth... My guiding star...
chr C[500005];uint Nxt[500005],n;
ullt Dist[500005],User[500005];
ullt hash,Ans,w0;
std::mt19937 rng(114514);
ullt T[26];
voi solve()
{
ullt w;scanf("%u%llu%s",&n,&w,C),Nxt[0]=-1;
if(w<n){puts("0");return;}
w-=n;
ullt h=0;for(uint i=0;i<n;i++)h=(h*114514+T[C[i]-'a'])%998244353;
if(h==hash&&w0==w){printf("%llu\n",Ans);return;}
hash=h,w0=w;
for(uint i=1,j=-1;i<n;i++)
{
while(~j&&C[j+1]!=C[i])j=Nxt[j];
if(C[j+1]==C[i])j++;
Nxt[i]=j;
}
std::vector<uint>R;
for(uint i=n-1;~i;)R.push_back(n-1-(i=Nxt[i]));
uint g=0;
for(uint p=0,r;p<R.size();p=r)
{
r=p+1;while(r<R.size()&&R[r]-R[r-1]==R[p+1]-R[p])r++;
if(r+1<R.size()&&R[r]-R[r-1]==R[r+1]-R[r])r--;
// if(r==p+2&&r+1<R.size()&&R[r]-R[r-1]==R[r+1]-R[r])r--;
// if(r-p<=2)r=p+1;
uint l=R[p],k=r-p;
for(uint i=0;i<g;i++)User[i]=Dist[i];
for(uint i=1;i<l;i++)Dist[i]=1e18;
for(uint i=0;i<g;i++)_min(Dist[User[i]%l],User[i]);
for(uint i=gcd(g,l)-1;~i;i--)
{
uint j=i;
do _min(Dist[(j+g)%l],Dist[j]+g),j=(j+g)%l;while(j!=i);
do _min(Dist[(j+g)%l],Dist[j]+g),j=(j+g)%l;while(j!=i);
}
g=l;if(k==1)continue;
uint d=R[p+1]-R[p];if(!(d%g))continue;
_min(k,g/gcd(g,d));
for(uint i=gcd(g,d)-1;~i;i--)
{
static uint V[500005],tp;V[0]=i,tp=1;
while((V[tp]=(V[tp-1]+d)%g)!=i)tp++;
uint t=0;
if(i)for(uint j=1;j<tp;j++)if(Dist[V[j]]<Dist[V[t]])t=j;
for(uint j=0;j<t;j++)V[tp+j]=V[j];
static uint D[500005],bgn,end;bgn=end=0;
for(uint j=t;j<t+tp;j++)
{
if(bgn<end&&j-D[bgn]==k)bgn++;
if(bgn<end)_min(Dist[V[j]],Dist[V[D[bgn]]]+g+(ullt)d*(j-D[bgn]));
while(bgn<end&&Dist[V[j]]<=Dist[V[D[end-1]]]+(ullt)d*(j-D[end-1]))end--;
D[end++]=j;
}
}
}
ullt ans=0;
for(uint i=0;i<g;i++)if(Dist[i]<=w)ans+=(w-Dist[i])/g+1;
printf("%llu\n",Ans=ans);
}
int main()
{
#ifdef MYEE
freopen("QAQ.in","r",stdin);
freopen("QAQ.out","w",stdout);
#endif
for(uint i=0;i<26;i++)T[i]=rng();
uint t;scanf("%u",&t);
while(t--)solve();
return 0;
}
// 那就是希望。
// 即便需要取模,也是光明。
詳細信息
Test #1:
score: 5
Accepted
time: 0ms
memory: 3124kb
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: 3124kb
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: 3032kb
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: 2ms
memory: 3060kb
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: 2ms
memory: 3084kb
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: 2ms
memory: 3192kb
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: 5ms
memory: 4012kb
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: 4ms
memory: 4380kb
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: 6ms
memory: 4512kb
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: 6ms
memory: 4260kb
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: 44ms
memory: 4972kb
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: 32ms
memory: 5044kb
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: 17ms
memory: 5456kb
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: 40ms
memory: 5624kb
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: 17ms
memory: 5660kb
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: 44ms
memory: 5776kb
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: 293ms
memory: 15348kb
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: 260ms
memory: 16748kb
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: 264ms
memory: 16296kb
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: 266ms
memory: 16408kb
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