QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#123530#2668. 论战捆竹竿dengtingyu100 ✓294ms38700kbC++142.4kb2023-07-12 19:44:382023-07-12 19:44:41

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-12 19:44:41]
  • Judged
  • Verdict: 100
  • Time: 294ms
  • Memory: 38700kb
  • [2023-07-12 19:44:38]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 500010
#define inf (1e18+10)
ll n,w;
string s;
ll nxt[N];
ll cn=0,x[N],d[N],l[N];
ll ans[N];
ll nw[N];
bool vis[N];
ll xu[N];
#define T pair<ll,ll>
#define fi first
#define se second
#define mk make_pair
T q[N];
ll ql=1,qr=0;
inline void solve(ll x,ll y,ll z,ll f){
	memset(vis,0,sizeof(vis));
	for(int i=0;i<x;i++){
		if(vis[i])continue;
		vector<ll>tem;ll cnt=0;tem.push_back(i);vis[i]=1;
		for(int j=(i+y)%x;j!=i;j=(j+y)%x)tem.push_back(j),vis[j]=1;
		ll pos=0;for(int j=1;j<tem.size();j++)if(ans[tem[j]]<ans[tem[pos]])pos=j;
		for(int j=pos;j<tem.size();j++)xu[++cnt]=tem[j];for(int j=0;j<pos;j++)xu[++cnt]=tem[j];
		ql=1;qr=0;q[++qr]=mk(1,ans[xu[1]]-y+f);
		for(int j=2;j<=cnt;j++){
			while(j-q[ql].fi>z&&ql<=qr)ql++;
			ans[xu[j]]=min(ans[xu[j]],y*j+q[ql].se);
			while(q[qr].se>=ans[xu[j]]-y*j+f&&ql<=qr)qr--;
			q[++qr]=mk(j,ans[xu[j]]-y*j+f);
		}/*ql=1,qr=0;q[++qr]=mk(cnt+1,ans[xu[1]]+(cnt+1)*y);
		for(int j=cnt;j>=2;j--){
			while(q[ql].fi-j>z&&ql<=qr)ql++;
			while(q[qr].se>=ans[xu[j]]+j*y&&ql<=qr)qr--;
			q[++qr]=mk(j,ans[xu[j]]+y*j);
			ans[xu[j]]=min(ans[xu[j]],y*j+q[ql].se); 
		}*/
	}
	return ;
}
int main()
{
//	freopen("test1.in","r",stdin);
	//freopen(".in","r",stdin);
	//freopen("test1.out","w",stdout);
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	ll ti;cin>>ti;while(ti--){
		cn=0;cin>>n>>w>>s;nxt[0]=-1;
		if(w<n){cout<<0<<'\n';continue;}w-=n;
		for(int i=1;i<n;i++){
			ll o=nxt[i-1];
			while(o!=-1&&s[o+1]!=s[i])o=nxt[o];
			if(s[o+1]==s[i])o++;nxt[i]=o;
		}vector<ll>tem;ll nww=nxt[n-1];while(nww!=-1)tem.push_back(n-nww-1),nww=nxt[nww];
		tem.push_back(n);sort(tem.begin(),tem.end());
		x[++cn]=tem[0];l[cn]=d[cn]=0;for(int i=1;i<tem.size();i++){
			ll o=tem[i];
			if(!d[cn])d[cn]=o-x[cn],l[cn]=1;
			else{
				if(d[cn]==o-tem[i-1])l[cn]++;
				else{
					x[++cn]=o;d[cn]=l[cn]=0;
				}
			}
		}for(int i=0;i<n;i++)ans[i]=inf;ans[0]=0;
		for(int i=1;i<=cn;i++){
			if(x[i-1]){
				ll o=x[i-1];
				for(int j=0;j<x[i];j++)nw[j]=inf;
				for(int j=0;j<x[i-1];j++)nw[ans[j]%x[i]]=min(ans[j],nw[ans[j]%x[i]]);
				for(int j=0;j<x[i];j++)ans[j]=nw[j];
				solve(x[i],x[i-1],inf,0);
			}solve(x[i],d[i],l[i],x[i]);
		}ll an=0;
		for(int i=0;i<x[cn];i++){
			if(ans[i]<=w)an+=(w-ans[i])/x[cn]+1;
		}cout<<an<<'\n';
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 5
Accepted
time: 3ms
memory: 17772kb

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: 3ms
memory: 17748kb

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: 3ms
memory: 19904kb

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: 19796kb

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: 4ms
memory: 17872kb

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: 17828kb

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: 20900kb

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: 22712kb

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: 7ms
memory: 20680kb

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: 9ms
memory: 22968kb

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: 31ms
memory: 19364kb

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: 27ms
memory: 24644kb

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: 11ms
memory: 24060kb

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: 48ms
memory: 21480kb

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: 27ms
memory: 24116kb

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: 42ms
memory: 21596kb

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: 267ms
memory: 34800kb

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: 289ms
memory: 38700kb

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: 292ms
memory: 37120kb

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: 294ms
memory: 38612kb

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