QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#142113#5368. 异世界的文章分割者DaiRuiChen00740 23ms12740kbC++142.5kb2023-08-18 15:02:292023-08-18 15:03:11

Judging History

你现在查看的是最新测评结果

  • [2023-08-18 15:03:11]
  • 评测
  • 测评结果:40
  • 用时:23ms
  • 内存:12740kb
  • [2023-08-18 15:02:29]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=5e4+5;
const ll inf=1e18;
struct Node {
	unordered_map <char,int> ch;
	int link,len;
}	tr[MAXN<<1];
int lst,tot;
inline void init() {
	for(int i=1;i<=tot;++i) {
		tr[i].link=tr[i].len=0;
		tr[i].ch.clear();
	}
	lst=tot=1;
}
inline int insert(char c) {
	int cur=++tot,p=lst;
	tr[cur].len=tr[lst].len+1;
	while(p&&!tr[p].ch.count(c)) tr[p].ch[c]=cur,p=tr[p].link;
	if(!p) tr[cur].link=1;
	else {
		int q=tr[p].ch[c];
		if(tr[q].len==tr[p].len+1) tr[cur].link=q;
		else {
			int r=++tot;
			tr[r]=tr[q],tr[r].len=tr[p].len+1;
			tr[cur].link=tr[q].link=r;
			while(p&&tr[p].ch[c]==q) tr[p].ch[c]=r,p=tr[p].link;
		}
	}
	return lst=cur;
} //SAM
char str[MAXN];
ll q[MAXN],w[MAXN];
int st[MAXN<<1],ed[MAXN<<1]; //ans[i]=qi+w
int buc[MAXN],rnk[MAXN<<1];
map <array<int,2>,int> Q;
bool vis[MAXN<<1];
inline ll eval(int l,int r) { //get val(S[l,r])
	if(Q.count({l,r})) return Q[{l,r}];
	fill(st+1,st+tot+1,r+1),fill(ed+1,ed+tot+1,l-1);
	fill(vis+1,vis+tot+1,false);
	init();
	for(int i=l;i<=r;++i) {
		int p=insert(str[i]);
		st[p]=ed[p]=i,vis[p]=true;
	}
	fill(buc,buc+r-l+2,0);
	for(int i=2;i<=tot;++i) if(!vis[i]) ed[i]=l-1,st[i]=r+1;
	for(int i=2;i<=tot;++i) ++buc[tr[i].len];
	for(int i=1;i<=r-l+1;++i) buc[i]+=buc[i-1];
	for(int i=2;i<=tot;++i) rnk[buc[tr[i].len]--]=i;
	for(int i=tot-1;i;--i) {
		int p=rnk[i];
		st[tr[p].link]=min(st[tr[p].link],st[p]);
		ed[tr[p].link]=max(ed[tr[p].link],ed[p]);
	}
	fill(q+l,q+r+1,0),fill(w+l,w+r+1,0);
	for(int i=2;i<=tot;++i) {
		auto add=[&](int x,int y,ll nq,ll nw) {
			if(x>y) return ;
			q[x]+=nq,w[x]+=nw;
			if(y<r) q[y+1]-=nq,w[y+1]-=nw;
		};
		int mx=tr[i].len,mn=tr[tr[i].link].len;
		add(st[i]+1,ed[i]-mx,0,mx-mn);
		add(max(st[i]+1,ed[i]-mx+1),ed[i]-mn,-1,ed[i]-mn+1);
	}
	ll ans=0;
	for(int i=l+1;i<=r;++i) {
		q[i]+=q[i-1],w[i]+=w[i-1];
		ans+=(q[i]*i+w[i])*(q[i]*i+w[i]);
	}
	return Q[{l,r}]=ans;
}
int n,k;
inline bool check(ll x) {
	int st=1,tot=0;
	while(st<=n) {
		if((++tot)>k) return false;
		auto judge=[&](int len) {
			if(st+len-1<=n) {
				return eval(st,st+len-1)<=x;
			}
			return false;
		};
		int k=1,len=0;
		while(judge(1<<k)) ++k;
		len=1<<(k-1);
		for(int d=k-2;~d;--d) if(judge(len+(1<<d))) len+=1<<d;
		st+=len;
	}
	return true;
}
signed main() {
	scanf("%d%d%s",&n,&k,str+1);
	ll l=0,r=inf,res=0;
	while(l<=r) {
		ll mid=(l+r)>>1;
		if(check(mid)) res=mid,r=mid-1;
		else l=mid+1;
	}
	printf("%lld\n",res);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 3ms
memory: 10380kb

input:

10 3
aaaaaaaaaa

output:

6

result:

ok single line: '6'

Test #2:

score: 0
Accepted
time: 1ms
memory: 11920kb

input:

10 1
abbbaabbba

output:

289

result:

ok single line: '289'

Test #3:

score: 0
Accepted
time: 1ms
memory: 11736kb

input:

10 2
cacabbcbca

output:

11

result:

ok single line: '11'

Test #4:

score: 0
Accepted
time: 0ms
memory: 10592kb

input:

10 4
aabbccddaa

output:

1

result:

ok single line: '1'

Test #5:

score: 0
Accepted
time: 0ms
memory: 11136kb

input:

10 4
ababbbabab

output:

2

result:

ok single line: '2'

Test #6:

score: 0
Accepted
time: 3ms
memory: 12056kb

input:

10 2
ababbaaaba

output:

12

result:

ok single line: '12'

Test #7:

score: 0
Accepted
time: 3ms
memory: 12188kb

input:

10 1
baabaababa

output:

156

result:

ok single line: '156'

Test #8:

score: 0
Accepted
time: 1ms
memory: 12212kb

input:

10 10
hbjebnidnq

output:

0

result:

ok single line: '0'

Subtask #2:

score: 10
Accepted

Dependency #1:

100%
Accepted

Test #9:

score: 10
Accepted
time: 3ms
memory: 10952kb

input:

50 10
aababaaabaabaaabababaaaaaabbbababbaababaaaabababba

output:

17

result:

ok single line: '17'

Test #10:

score: 0
Accepted
time: 4ms
memory: 11128kb

input:

50 5
bbbaabbbbbaabaababbbbbbaaaaababbbaaabaaaaaabbabaab

output:

91

result:

ok single line: '91'

Test #11:

score: 0
Accepted
time: 3ms
memory: 12212kb

input:

50 5
adbabadbabadbabadbabadbabadbabadbabadbabadbabadbab

output:

412

result:

ok single line: '412'

Test #12:

score: 0
Accepted
time: 3ms
memory: 11988kb

input:

50 3
caaabcaaabcaaabcaaabcaaabcaaabcaaabcaaabcaaabcaaab

output:

3222

result:

ok single line: '3222'

Test #13:

score: 0
Accepted
time: 3ms
memory: 10472kb

input:

50 1
cadabcadabcadcadabcadabcadcadabcadcadabcadabcadcad

output:

407986

result:

ok single line: '407986'

Test #14:

score: 0
Accepted
time: 1ms
memory: 10768kb

input:

50 15
bbbbbbabaabaaaabaaabbaababbaaabababbbbaabaababaaba

output:

3

result:

ok single line: '3'

Test #15:

score: 0
Accepted
time: 0ms
memory: 10384kb

input:

50 20
baaaaaaaabbabbababbaaaabbabaabbababbbabbbabaaabaaa

output:

2

result:

ok single line: '2'

Test #16:

score: 0
Accepted
time: 1ms
memory: 10368kb

input:

50 6
ababbbbaaaaabbbabaabaaabaaabababababbaaaababbbbbab

output:

65

result:

ok single line: '65'

Test #17:

score: 0
Accepted
time: 3ms
memory: 11448kb

input:

50 1
aabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaa

output:

129389

result:

ok single line: '129389'

Test #18:

score: 0
Accepted
time: 3ms
memory: 11544kb

input:

50 1
acbcaabcababaacbbacaabcbacccbbaacaccbabccacaccaabb

output:

16446

result:

ok single line: '16446'

Test #19:

score: 0
Accepted
time: 0ms
memory: 10920kb

input:

50 14
ccaccaccaccaccaccaccaccaccaccaccaccaccaccaccaccacc

output:

6

result:

ok single line: '6'

Test #20:

score: 0
Accepted
time: 3ms
memory: 10720kb

input:

50 24
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

output:

2

result:

ok single line: '2'

Test #21:

score: 0
Accepted
time: 3ms
memory: 10908kb

input:

50 50
txcopptgjrvkgzdvaxgrhwgnkjfbspyytzkbirczhcrctddsfj

output:

0

result:

ok single line: '0'

Subtask #3:

score: 20
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Test #22:

score: 20
Accepted
time: 1ms
memory: 10488kb

input:

200 1
cabaababbabbbcabcbcaacbccaabcacbccaabbccccbcabbcacbbcbacbccaabbbbcbcabbacabbacccbbbbbacccabcccaaacbcbaaaccabbbabcaabbbababcabccbccbaaabbbcbccbbcacbbabbaabcacbcaccccccaaaccabbaaabbbcbbccbcabbbcabcccabb

output:

2192936

result:

ok single line: '2192936'

Test #23:

score: 0
Accepted
time: 0ms
memory: 10720kb

input:

200 2
cbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaacbaa

output:

1196175

result:

ok single line: '1196175'

Test #24:

score: 0
Accepted
time: 0ms
memory: 11264kb

input:

200 3
acabacbacacabacbacacabacacabacbacacabacbacacabacacabacbacacabacacabacbacacabacbacacabacacabacbacacabacbacacabacacabacbacacabacacabacbacacabacbacacabacacabacbacacabacacabacbacacabacbacacabacacabacbacac

output:

1550907

result:

ok single line: '1550907'

Test #25:

score: 0
Accepted
time: 5ms
memory: 12104kb

input:

200 7
hefdaadcdgfecghbgcbggfgdfchchgbdfafghahacgbbcebfchadbcechdacacccahggadbdacbggadbgceacgeedfafbhhfhaacdccefddbfaffcdggabhhcghcbfbedddeheaeaabdahhbhcefeededbfdafghdahcfbfbcbbdgccffhaeggcdhdcghghfaaefechd

output:

1134

result:

ok single line: '1134'

Test #26:

score: 0
Accepted
time: 2ms
memory: 10400kb

input:

200 11
lmmeigmkegfbcmhfedchmeckbnbgjlfljahjleeldlnkdlnkngaeiiblangdlkdfjchalckfhfcjgljlelebhfacafkjknknjjfklnhcnlgkkjmhfafmhehgehmejajabgaikfnclihbkmeckghfljgfmajflilgcimamgljlhjkfhgjcbcddfjlnchcgedmghdlfaib

output:

155

result:

ok single line: '155'

Test #27:

score: 0
Accepted
time: 5ms
memory: 11224kb

input:

200 19
cdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbaccdcccacbac

output:

133

result:

ok single line: '133'

Test #28:

score: 0
Accepted
time: 5ms
memory: 10588kb

input:

200 16
acdbddbaacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbddbaacdbacdbddbaacdbacdbddbaacdb

output:

481

result:

ok single line: '481'

Test #29:

score: 0
Accepted
time: 6ms
memory: 10884kb

input:

200 25
abacdacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacdacdabacdabacdacdabacda

output:

99

result:

ok single line: '99'

Test #30:

score: 0
Accepted
time: 5ms
memory: 10680kb

input:

200 25
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkgmivxnitlfmciurqeqnqghxveqrxidxbmzlpdveuucarjwdqyiiaegadulttqmkzinvxalbvnccchfvjechxnufmcmofrdkesmkjeiobfzwbppknslhtxoranwbjnxggudgjmjrigintzxkusvvaqwhuwvoyiz

output:

6

result:

ok single line: '6'

Test #31:

score: 0
Accepted
time: 1ms
memory: 11764kb

input:

200 37
aaaaaaaaaaaaabdecdebedebaaaaaaaaaaaaaaaacebcbcecaebeaaaaaaaaaaaaaebcddecebbebaaaaaaaaaaaaaaeadaaecdadbaeaaaaaaaaaaaaaccbabdbbeedaeaaaaaaaaaaaaadbddbebeddcbeaaaaaaaaaaaaaaceeedcecdadbaaaaaaaaaaaaaaaaaa

output:

10

result:

ok single line: '10'

Test #32:

score: 0
Accepted
time: 2ms
memory: 10872kb

input:

200 64
bbabbbaaaabababaabbaaaabbabbbaabbaababababbbaabbbbbbbbbabbbbabaababbbbabbbabbbaabbbbbaabaabbbbbbababbbabbaaaababbbbabbbaaaaaaabbabbaabaabaabbaaabbaaaaaabaabbbbaaaaabbababbaabaabbbbbabbbbababbbbaaabaab

output:

2

result:

ok single line: '2'

Test #33:

score: 0
Accepted
time: 1ms
memory: 10568kb

input:

200 49
abbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabbab

output:

10

result:

ok single line: '10'

Test #34:

score: 0
Accepted
time: 6ms
memory: 10876kb

input:

200 57
zbizbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbizbzbizbzbizbizbzbizbz

output:

3

result:

ok single line: '3'

Test #35:

score: 0
Accepted
time: 6ms
memory: 11112kb

input:

200 44
aaaaaaacdaadaaaaaaabdbbaaaaaaaaaacbdaaaaaadccdcbaaaaaabdcdadaaaaaaccdabbaaaaaadcbaadaaaaaacdcdbaaaaaaabbcbdbaaaaaaabacbbaaaaaabcbccdaaaaaadbaabdaaaaaadaacddaaaaaaadcdbcaaaaaabbcdcaadbbdccdacdbcaccdbbd

output:

6

result:

ok single line: '6'

Subtask #4:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Test #36:

score: 20
Accepted
time: 12ms
memory: 12644kb

input:

1000 153
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

28

result:

ok single line: '28'

Test #37:

score: 0
Accepted
time: 23ms
memory: 12740kb

input:

1000 79
babacbbcacbbccccababbacbacacbbcabcabbaaabccbacbaacccaaaaabbcabaabcaaabccccbbaabbcaccaaacccbaaacaacccaccababaacbcbbacbcbbbcccbbcbaaababbcbacaacaccbcacaaccbbbcaabcaababbcbbabbccaccbccabaacbcacbbccbbcbaaccbcaacccacccccabbbabccacbbbbcaabccccacababacaccacbcccbcccbaccabaacbaccabbcbbacaabcbcacccaac...

output:

200

result:

ok single line: '200'

Test #38:

score: 0
Accepted
time: 11ms
memory: 10836kb

input:

1000 6
ahcfaddebbbccheeffbfdbbbdcjhdefhcibhgjbgeaigaaifcbdfbjdjiddicbhagggaaaajiejjjfdabcjjjceieaijacjbaecifacgdajcigfababaddecfehdhfbfjhdahchahiiiafaibdbbdegeachfdicciaegdcagaahgdgebdhbdejajafajjjfdjfjdijjgahjdjjjifeejjbachjaiacgjfhccebjgddjehiecibjfheicgihfdabhbdiijbcdgffaedcejecciddahjajdfjiddhgc...

output:

237763

result:

ok single line: '237763'

Test #39:

score: 0
Accepted
time: 22ms
memory: 11944kb

input:

1000 79
cfbdcgcdcdgabebecbbgcebcgefcbdageefffaddafegeabdagdaaabeaedgabgedafdegdggbedcceafgegbceceebaaadbccgadebeaeebcaggdbdgefeaeegafgbaeegaadbcaeddceecacbecdgfaefaeagdbaadbdfceedgdabfbaadcffgbedfgbbdddbcgdfccaeabbgabdfgefcefbaadefcfagebegfafbabfcbaagbedacfgffefadcdecbabbcfaegcgcddbagceaaaabcfacgfbe...

output:

91

result:

ok single line: '91'

Test #40:

score: 0
Accepted
time: 7ms
memory: 11824kb

input:

1000 3
htspasbnfsqdnsppbkaaprldgjpfaikdjcaojaejdtipsrkrfddlkepkqbjprsejnpcqigqjkmpqfhbbglccmtrrngoopfscopnocqkfesphqnteofsinkqqopnknbkejodkpnmjobgcisimpsgnqqidtfsdjakntlkgtgnnaietrijhgksrsnohilbrrtcpndciksonfptfkljhhisihcngqsdmgreakrrgmgnspabhfmegnmhtlhkrfnliipssjcbdikfgqmjtaltootaaopdrfrfrdaelnbrdd...

output:

1022595

result:

ok single line: '1022595'

Test #41:

score: 0
Accepted
time: 14ms
memory: 11116kb

input:

1000 14
jmgovzbodqoznwcmegtwxcunytkvnnoqixxjgbspvoochcctbmgfcofmdctzmpxwqwztunedfpvrdbbgujrmowvbahioiwnewuidqkajpxdkwckpmmbrkbrebgiqdktjgeaktrcgcaduslvxlpqofscjzmjmjyyzpvogthoglxsdvqpvcccfljopkcudctgxjovrppnbyzairtebpggtheutanrfalcsakvcreyxxchzalfaybwptnbulyteeuapgoscpzvigwetrjhtzxtgzhehhknztxhcvrbw...

output:

11558

result:

ok single line: '11558'

Test #42:

score: 0
Accepted
time: 13ms
memory: 11732kb

input:

1000 102
bacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaabacaab...

output:

384

result:

ok single line: '384'

Test #43:

score: 0
Accepted
time: 5ms
memory: 12308kb

input:

1000 11
dfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidabdhgcdfbkbjdlafmdkfifefkbcblkmjhjhidab...

output:

15796914

result:

ok single line: '15796914'

Test #44:

score: -20
Wrong Answer
time: 5ms
memory: 12128kb

input:

1000 3
cmabiacablhoadfenghhdekggicmfkhennaifblffiofabfdkmlcklkndoiognhfihbocmabiacablhoadfenghhdekggicmfkhennaifblffiofabfdkmlcklkndoiognhfihbocmabiacablhoadfenghhdekggicmfkhennaifblffiofabfdkmlcklkndoiognhfihbocmabiacablhoadfenghhdekggicmfkhennaifblffiofabfdkmlcklkndoiognhfihbocmabiacablhoadfenghhd...

output:

101529706

result:

wrong answer 1st lines differ - expected: '6797306034', found: '101529706'

Subtask #5:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Dependency #4:

0%