QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#642438#9244. Counting Stringsucup-team4153AC ✓587ms169956kbC++202.1kb2024-10-15 14:14:532024-10-15 14:14:53

Judging History

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

  • [2024-10-15 14:14:53]
  • 评测
  • 测评结果:AC
  • 用时:587ms
  • 内存:169956kb
  • [2024-10-15 14:14:53]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll=long long;using ull=unsigned long long;
const int N=2e5+10,A=(1<<16)-1;
int n;
ull Bt[1611],Bp[10011][1611],Bw[1611];
int pps[1<<16],ppc[1<<16],Bn;ll ans;
ll F(ull x,int i)
{
	i++;
	return pps[x>>48&A]+pps[x>>32&A]+pps[x>>16&A]+pps[x&A]+ppc[x>>48&A]*(48+i)+ppc[x>>32&A]*(32+i)+ppc[x>>16&A]*(16+i)+ppc[x&A]*i;
}
int len[N],fail[N],ed[N];
vector<int>G[N];
void cover(int l,int r)
{
	if(l&63)
	{
		ans+=F(Bt[l>>6]>>(l&63),l);
		Bt[l>>6]&=((ull)1<<(l&63))-1;
		l+=64-(l&63);
	}
	for(int i=l;i<=r;i+=64)
	{
		ans+=F(Bt[i>>6],i);
		Bt[i>>6]=0;
	}
}
vector<int>fp[N];
bool is[N];int pr[N];
void dfs(int u,int F)
{
	if(ed[u])
	{
		int n=len[u]-1,Bn=n>>6;
		for(int i=0;i<Bn;++i)Bw[i]=-1;
		if(!(n+1&63))Bw[n>>6]=-1;
		else Bw[n>>6]=((ull)1<<(n&63)+1)-1;
		for(int x:fp[ed[u]])for(int i=0;i<=Bn;++i)Bw[i]&=~Bp[x][i];
		for(int i=0;i<=Bn;++i)Bt[i]|=Bw[i];
	}
	for(int v:G[u])if(v^F)dfs(v,u);
	if(u)cover(len[fail[u]],len[u]-1);
}
int ch[N][26],sz,lst;
void g_SAM()
{
	string s;cin>>n>>s;fail[0]=-1;
	for(int z=1;z<=n;z++)
	{
		char c=s[z-1];int nw=++sz;len[nw]=len[lst]+1;ed[nw]=z;
		int p=lst;lst=nw;while(~p&&!ch[p][c-'a'])ch[p][c-'a']=nw,p=fail[p];
		if(!~p){fail[nw]=0;continue;}
		else
		{
			int q=ch[p][c-'a'];
			if(len[p]+1==len[q])fail[nw]=q;
			else
			{
				int cl=++sz;
				for(int i=0;i<26;++i)ch[cl][i]=ch[q][i];
				len[cl]=len[p]+1;fail[cl]=fail[q];fail[q]=fail[nw]=cl;
				while(~p&&ch[p][c-'a']==q)ch[p][c-'a']=cl,p=fail[p];
			}
		}
	}				
	for(int i=1;i<=sz;i++)G[fail[i]].push_back(i);
}
void sieve()
{
	is[0]=is[1]=1;
	for(int i=2;i<=n;i++)
	{
		if(!is[i])pr[++pr[0]]=i,fp[i].push_back(pr[0]);
		for(int j=1;j<=pr[0]&&i*pr[j]<=n;j++)
		{
			is[i*pr[j]]=1;fp[i*pr[j]]=fp[i];fp[i*pr[j]].push_back(j);
			if(i%pr[j]==0)break;
		}
	}
}
int main()
{
	g_SAM();sieve();
	for(int S=0;S<1<<16;S++)for(int i=0;i<16;i++)if(S>>i&1)ppc[S]++,pps[S]+=i;
	for(int i=1;i<=pr[0];i++)for(int j=0;j<=n;j+=pr[i])Bp[i][j>>6]|=(ull)1<<(j&63);
	Bn=n-1>>6;dfs(0,0);cout<<ans<<'\n';
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 6ms
memory: 8160kb

input:

4
abca

output:

14

result:

ok answer is '14'

Test #2:

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

input:

1
a

output:

1

result:

ok answer is '1'

Test #3:

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

input:

2
aa

output:

3

result:

ok answer is '3'

Test #4:

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

input:

2
ab

output:

3

result:

ok answer is '3'

Test #5:

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

input:

100
xgljgljgljjljjjjljtjljtgljgljgljjljjjjljtjljtjljgljljgljgljjljjjjljtjljtjljgljllljgllgljgljjglljgljl

output:

101808

result:

ok answer is '101808'

Test #6:

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

input:

100
ilhliaiehaiehldgeieieedveldgeaeaehldgeldgeiiedeiaiehaiehldgeieieedveiaehldgeihleiaeaehldgeiaeaeeheia

output:

103718

result:

ok answer is '103718'

Test #7:

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

input:

100
xoakgbazaclazfrmucgodlhrvazkyrqcwufonvcmqpvulhuudtmcfhsklletywchvvrxrjfgsfaoozzouzwfrtdlryfiqdtzjkcp

output:

104574

result:

ok answer is '104574'

Test #8:

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

input:

100
aabbaabbabaaabaaaaaabababbbabaabaaabaaabaaaabbbbababbbbbbabbbaabbbaaaaababababaabababaababaabbbabaaa

output:

103589

result:

ok answer is '103589'

Test #9:

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

input:

2000
mbrpuyrsqimuuwnmxsukdkfmhwytmfwwccfdkzljulnvlueciggqniuyocqxoiepzuzhnfwwccvmxyticsttujuzhnfwwccfwkbuuecinfwwccfwkbuueciggqniuyodfkhnfwwccfdkzljulnvlueciggqniuyocqccfwkbuueciggquyciggqniuyodfkevrpjzuzwyocqccfwkbuueciggquyciggqniuyodfkevrpjzuzhnfwwcoiynpzlqsjimovvcrzbggnciggqniuyodfkevrpjzuzhnfwy...

output:

801214345

result:

ok answer is '801214345'

Test #10:

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

input:

2000
kqxjsrvosiglekiyqcvcuziktmldotulfsjttakesboiiuwwukcuytllrixkibipmcfkibipmcfchmczrunxluomocoaltfiknghuglwiychueqazfcalzqgwoqeyifsawnaennubfacviqcwhstxgvjfggcluomocuomocoareueqazfcalzqgwoaxfchmczrunxecifuecidmpavuecidmpavxzysvebqavozoqsnnhimpjgcqnwfzhysnnaevxreouaxyykcuynghuglygfjcvyggcluomocuomo...

output:

806947518

result:

ok answer is '806947518'

Test #11:

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

input:

2000
uwgwftwgqszqrzzokbabeqpmnhlthazkxhncmmrkbhueafpsncvtpvxoxaatarvrmnpnkkrafkwzchacxcuphbwkmbtrxtydpsjzsvkskprttbyonkhwdsckvgtqvtjixayxggktqbwkhrcujsxfwiahxexnbjnzulzmpmubiqzbphrbpmvjjikcqftgnvzxzpzimpmidcmeescxhtqbukkwppipuumhpbyywdooxblckfuartpvrehkjspsscztazgtmpvqjpmjmezhroympynptcjcpvtzesfmair...

output:

812517617

result:

ok answer is '812517617'

Test #12:

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

input:

2000
aaababaaabaaaabbbaaabbaabaabbababaababbababbbbbbabaaaabbbbbbbabbbaabbababbaaabaababbababbbaaabbbabbaabbbaaabbabbabbbbabbbababaaaabbabbababaaabbbbbbababbbbabbbaababbabaabbbbababaaaababaaabbbabbaabaaabababaaababbbaabaaabbbbbabbaaaabbaabababbaaabbbbbaababbabaaaaaabababbaaabbbbabbbaaaababbabbbaaaba...

output:

812460124

result:

ok answer is '812460124'

Test #13:

score: 0
Accepted
time: 587ms
memory: 148860kb

input:

100000
mglkvngcyzmvyrpxumiusfvkzutlgexoiyjezqsdudzbjxyovuhocbjeyhgjlncvsihuopxevcrvlmphgtmibfvqaffrgrpshxprppojmhvhfxffnscxprhrckqjefohfjadbasuksrljfonckgvvynyyhwtktgonksetyjxftgxhfyplekgmgtinfhslcmgxiiorcgndimffpvolzfrqnpdaijdkujoaqgwoowxkivrtboylhdvenwiqxbfovydkidseplcyqhheinoqrghnqilwrgkcxpkdzjrx...

output:

101324985069108

result:

ok answer is '101324985069108'

Test #14:

score: 0
Accepted
time: 574ms
memory: 152436kb

input:

100000
knrammmidsuxwygkfulairkwldjfxyovcnfgxtajosuafyjflkjmzjfniohxucagrmthceicngqrasgcskanqrfkuqxeggafhlpxkicokvuatkxlduldrxkmhdiwxrjukqcpfbiuskbfejjxfafxpibpjzfycuaaoaerajqspchthdgnmhqwdqvkqfubyoibcflddbwbpvbtmomopuovdcbgdnifkkewxixmtcagsfifbnlrajtuccsxrjuqrphuoldurcnjwqwraoulyxsqsjkaxacouwujpyqfe...

output:

101324985069554

result:

ok answer is '101324985069554'

Test #15:

score: 0
Accepted
time: 108ms
memory: 76548kb

input:

40000
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...

output:

6463823387870

result:

ok answer is '6463823387870'

Test #16:

score: 0
Accepted
time: 97ms
memory: 73912kb

input:

40000
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww...

output:

6382800423488

result:

ok answer is '6382800423488'

Test #17:

score: 0
Accepted
time: 121ms
memory: 77944kb

input:

40000
bbbabbbbbbaabbaabaaaababaabaaabbbaaabaabbaaababbabbbbaabbaaababbbaababbaaabbabaaabbabbbbbbbbabaaaaaaabbabaababaabababaaaabaabaabbbbbbbaaaabaababbbbbaabbaabbaababbbbaaabaabbabbabbbaabaabbbbaabbabbbabababbbaaabbbaaababaaaaabbaaabaabaaabbabaaabbaabbaaabababaaabaabaaabaabbaabaabaabaabaababbaabbaaa...

output:

6485120267266

result:

ok answer is '6485120267266'

Test #18:

score: 0
Accepted
time: 44ms
memory: 73568kb

input:

40000
tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt...

output:

800020000

result:

ok answer is '800020000'

Test #19:

score: 0
Accepted
time: 551ms
memory: 162856kb

input:

100000
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo...

output:

101137073335748

result:

ok answer is '101137073335748'

Test #20:

score: 0
Accepted
time: 554ms
memory: 160080kb

input:

100000
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn...

output:

100461213430599

result:

ok answer is '100461213430599'

Test #21:

score: 0
Accepted
time: 555ms
memory: 152796kb

input:

100000
bslghenpredjtkgndijltrmysucihsrsnselcsrumqotigyzviasrrickbbtxylubpeqjkcbzerviihnnfymdhgpongdqkpfqwrblqzxdbecktaezedfndyncabehsgoxashszbyqbfnolnbcmsdaulgdyvhfpctmhdbfycfqgfoprbnsqosocnqxiwhvtmfrvxydutmasdmbshbknusybepunclxtynonodldbrgvcatizjscrifzbjfmwrbfedntreoumkuacuszsulqebqfloydlhabbhbtjnw...

output:

101324985069047

result:

ok answer is '101324985069047'

Test #22:

score: 0
Accepted
time: 259ms
memory: 169956kb

input:

100000
owalzrsepmooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo...

output:

66609812613

result:

ok answer is '66609812613'

Test #23:

score: 0
Accepted
time: 560ms
memory: 156260kb

input:

100000
swtpnyrtrjjvecymbvpjkcraazjzwjnawoihpmfnjkrhbnqbpgnfldgjuuesdtwipkvxqhfcjgyurqxsbnsfquesnjpyisnvjleuflxcovfiblfkixliqflqvswyvxrfjfoopdjsdowjsrwkokguvlqrrdfxfakqdnjrmtdxvzczvovsjhvelaizfasgyjvyudsyjkrassxoheuhfbbxdorxivdzgztosybvbaffyibkvjxdnluowqyyknsicqmvqjfnvhxqriftehsugfabpbszfvqyehuekphxi...

output:

101130039817037

result:

ok answer is '101130039817037'

Test #24:

score: 0
Accepted
time: 566ms
memory: 165288kb

input:

100000
whogzkfhreoscnrbfzczzmpapeieazzzzzagazzayapzzzzaqfoacfffitsithrtnytiegycwzczzaytsxivfiiiveeezzaqfoaqfoacdtitfffiiiqchietnypeieafzaucwqfoacdttsithrtnyiiiqfuxiveeeuuaslaazzwzzaazzwzzzzzagazzayapzzzzaqfoacfffitsithrtnytiegycwzczzaytszztsitqfoacdttsithrtndiitfffiiiqcyapecdttsithaazoatazzayaaqfoac...

output:

100955554850350

result:

ok answer is '100955554850350'

Test #25:

score: 0
Accepted
time: 240ms
memory: 160780kb

input:

100000
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...

output:

5000050000

result:

ok answer is '5000050000'

Test #26:

score: 0
Accepted
time: 465ms
memory: 157356kb

input:

99996
hfaeeqetfftvwktktfftaettttutjetjtjetjetktfftvatfjeljtakttttktfftvwklaettftvftjetjetktklftvjutjetjtjetjetvwklaettftvjutjetjjtftjetjtttttktjttljfftvwklaettfttftvjutjetjjtftjetjetktklfttvjutjetjettjeftfjeljtakttttktfftvwklaettftvftjetjetktklftvjutjetjtjetjetvwklaettftvjutjetjjtftjetjtttttktjttljf...

output:

97148038053410

result:

ok answer is '97148038053410'

Test #27:

score: 0
Accepted
time: 452ms
memory: 163260kb

input:

99997
hazaorzbkzqhymcexwahmkkexwackcokahrzcexwahmcokazaorwahmcookxccokahrzcexwahcokahrskehmcorclclmkahrzcexwahmcokazaorwahmcookwcexwakokacoahmcookwahmcookxccokahrzcexwahmcokazaorwahxccokahrzcexwahmcokazaocokwamluorwahmcookwcexwahrzcxwahmcokwamlurclclskkxccokahrzcxhrzcexwahmcokazaorwahmzcexwaaorwahma...

output:

89901430986589

result:

ok answer is '89901430986589'

Test #28:

score: 0
Accepted
time: 448ms
memory: 158668kb

input:

99998
ptkbpqxysqlmgpoyfjxysogysqlmgxgpogsystgmqysosgposqggtlmgxmgtgsqlmgysqggqxqlbsttsgposqlssysgytposgsqlmmqxmgpogsystgysmqxmmsgtggtpoyggtggtpospogjxysmqxysqlmgxmgtggpogsystgmqysosgposqlssgtmgxmgxmgtggtpospogjxysmqxysqlmgxmgtggtpostggtpogysqlmgysqggqxggtlmfjtgggslbsgtmgxmgxmgtggtpospogjxysmogtggtlm...

output:

93788469111158

result:

ok answer is '93788469111158'

Test #29:

score: 0
Accepted
time: 534ms
memory: 162324kb

input:

99998
iddudaoqdudakrdanwwakrwdnoqduddanpakrwuuqakrdnpugaanpakrwuuqakrddanwwakrwdnoqduddanpaugaanpakrwuuqakrddanwwakrwdnoqduddakrddanwwakrwdnoqduddanpakrqduddanpaugaanpakrwuuqakrddanwwakrwdnduddanpakrwuuqakrdnpnpugakrwdnoqduddanpakrwuuqakrdnpnpunanwwakrwdnoqduddauoquoqnnwwwuuopurwuupuddakrddanwwakrwd...

output:

97357749831441

result:

ok answer is '97357749831441'

Extra Test:

score: 0
Extra Test Passed