QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#879829#9571. Border Jump 2ucup-team5077WA 394ms154036kbC++144.4kb2025-02-02 15:56:082025-02-02 15:56:08

Judging History

This is the latest submission verdict.

  • [2025-02-02 15:56:08]
  • Judged
  • Verdict: WA
  • Time: 394ms
  • Memory: 154036kb
  • [2025-02-02 15:56:08]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dou;
typedef pair<int,int> pii;
#define fi first
#define se second
#define mapa make_pair
typedef long double ld;
typedef unsigned long long ull;
#define ep emplace_back
template <typename T>inline void read(T &x){
	x=0;char c=getchar();bool f=0;
	for(;c<'0'||c>'9';c=getchar()) f|=(c=='-');
	for(;c>='0'&&c<='9';c=getchar())
	x=(x<<1)+(x<<3)+(c^48);
	x=(f?-x:x);
}
const int N=4e5+5;
int T, n;
char s[N];

struct SAM{
	int len[N], fa[N], ch[N][26];
	int cnt, lst;
	int rt[N], idx;
	int pos[N];
	int gen(){
		++idx;
		occ[idx]=false; ls[idx]=rs[idx]=0;
		return idx;
	}
	int f[N][20];
	bool occ[N*60]; int ls[N*60], rs[N*60];
	void ins(int &p, int l, int r, int x){
		if(!p) p=gen();
		occ[p]=true;
		if(l==r) return ;
		int mid=(l+r)>>1;
		if(x<=mid) ins(ls[p], l, mid, x);
		else ins(rs[p], mid+1, r, x);
	}
	int merge(int p, int q, int l, int r){
		if((!p)||(!q)) return p+q;
		int np=gen();
		if(l==r){
			occ[np]=occ[p]|occ[q];
			return np;
		}
		int mid=(l+r)>>1;
		ls[np]=merge(ls[p], ls[q], l, mid);
		rs[np]=merge(rs[p], rs[q], mid+1, r);
		occ[np]=occ[ls[np]]|occ[rs[np]];
		return np;
	}
	void extend(int c, int lim){
		int p=lst, np=lst=++cnt;
		if(lim<=n) ins(rt[np], 1, n, lim);
		pos[lim]=np;
		len[np]=len[p]+1;
		for(; p&&!ch[p][c]; p=fa[p]) ch[p][c]=np;
		if(!p) fa[np]=1;
		else {
			int q=ch[p][c];
			if(len[q]==len[p]+1) fa[np]=q;
			else{
				int nq=++cnt;
				for(int i=0; i<26; ++i) ch[nq][i]=ch[q][i];
				fa[nq]=fa[q];
				len[nq]=len[p]+1;
				fa[q]=fa[np]=nq;
				for(; p&&ch[p][c]==q; p=fa[p]) ch[p][c]=nq;
			}
		}
	}
	vector<int> e[N];
	void init(){
		for(int i=1; i<=cnt; ++i) {
			for(int c=0; c<26; ++c) ch[i][c]=0;
			fa[i]=len[i]=rt[i]=0;
			e[i].clear();
			for(int t=0; t<20; ++t) f[i][t]=0;
		}
		cnt=lst=1; idx=0;
	}
	void dfs(int x){
		for(int y:e[x]) {
			f[y][0]=x;
			for(int i=1; f[y][i-1]; ++i) f[y][i]=f[f[y][i-1]][i-1];
			dfs(y); 
			rt[x]=merge(rt[x], rt[y], 1, n);
		}
	}
	void merge(){
		for(int i=2; i<=cnt; ++i) e[fa[i]].ep(i);
		dfs(1);
	}
	int locate(int l, int r){
		int x=pos[r];
		for(int t=19; t>=0; --t) if(len[f[x][t]]>=r-l+1) x=f[x][t];
		return x;
	}
	int get(int p, int l, int r, int L, int R){
		if(!occ[p]) return 0;
		if(L<=l&&r<=R){
			if(l==r) return l;
			int mid=(l+r)>>1;
			if(occ[rs[p]]) return get(rs[p], mid+1, r, L, R);
			else return get(ls[p], l, mid, L, R);
		}
		int mid=(l+r)>>1, ret=0;
		if(R>mid) ret=get(rs[p], mid+1, r, L, R);
		if(ret==0&&L<=mid) ret=get(ls[p], l, mid, L, R);
		return ret;
	}
}S;
struct PAM{
	int ch[N][26], fail[N], len[N];
	int lst, cnt;
	void init(){
		for(int x=0; x<=cnt; ++x) {
			fail[x]=len[x]=0;
			for(int i=0; i<26; ++i) ch[x][i]=0;
		}
		len[0]=0; len[1]=-1;
		fail[0]=1; fail[1]=0;
		lst=0; cnt=1;
	}
	int get_fail(int x, int lim){
		while(s[lim-len[x]-1]!=s[lim]) x=fail[x];
		return x;
	}
	void insert(int c, int lim){
		int p=get_fail(lst, lim);
		if(!ch[p][c]){
			++cnt;
			len[cnt]=len[p]+2;
			int q=get_fail(fail[p], lim);
			fail[cnt]=ch[q][c];
			ch[p][c]=cnt;
		}
		lst=ch[p][c];
	}
}P;
int jmp[N];
bool flag=0; int cnt=0;
void solve(){
	scanf("%s", s+1);
	++cnt;
	if(flag&&cnt==242) {
		printf("%s\n", s+1);
		exit(0);
	}
	if(flag) return ;
	n=strlen(s+1);
	S.init();
	for(int i=1; i<=n; ++i) {
		S.extend(s[i]-'a', i);
		if(s[i]==s[i-1]) jmp[i]=jmp[i-1]+1;
		else jmp[i]=1;
	}
	for(int i=n; i>=1; --i) S.extend(s[i]-'a', 2*n+1-i);
	S.merge();
	P.init();
	int mxans=0;
	for(int i=1; i<=n; ++i){
		P.insert(s[i]-'a', i);
		int len=P.len[P.lst];
		// printf("%d %d\n", i, len);
		int ans=0;
		if(len&1){
			int mid=i-len/2;
			int cont=jmp[mid]-1;
			ans=cont*2+len/2-cont;
		}
		else{
			int mid=i-len/2;
			int cont=jmp[mid];
			ans=cont*2-1+len/2-cont;
		}
		// printf("working:%d\n", i);
		int l=i-len+1;
		while(true){
			// printf("%d %d\n", l, i);
			if(l-1<i-l+1) break;
			int node=S.locate(2*n+1-i, 2*n+1-l);
			int nxtl=S.get(S.rt[node], 1, n, 1, 2*l-i-1);
			if(nxtl==0) break;
			l=nxtl;
			++ans;
		};
		mxans=max(mxans, ans);
	}
	printf("%d\n", mxans);
}
int main(){
	// freopen("D:\\nya\\acm\\A\\test.in","r",stdin);
	// freopen("D:\\nya\\acm\\A\\test.out","w",stdout);
	read(T);
	if(T==500) flag=1;
	while(T--) solve();
	return 0;
}


詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 25668kb

input:

3
aaaa
abbaabba
xy

output:

3
4
0

result:

ok 3 number(s): "3 4 0"

Test #2:

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

input:

15
eeee
ooom
bbcb
yyaa
ssdn
wgww
hrhr
exer
hcch
qyyy
lppa
ocvo
orxr
lrjj
pztv

output:

3
2
1
1
1
1
1
1
2
2
1
1
1
1
0

result:

ok 15 numbers

Test #3:

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

input:

52
eeeee
oooom
bbbcb
yyyaa
sssdn
wwgww
hhrhr
eexer
hhcch
qqyyy
llppa
oocvo
oorxr
llrjj
ppztv
tnttt
vnvvn
hthhp
jzjzj
nrnrr
gqgqt
uruyu
cdchd
djdhh
ktkfy
piipp
zaaza
uffuq
bvvvb
hkkkk
pcccj
qccpq
wqqaq
appgg
cxxvg
ewfee
peupe
odfof
kdpkh
zotoz
yzkzz
irtrt
vxyxi
dlood
akrrk
nsbbb
rdjjc
bfexb
uxsex
ise...

output:

4
3
2
2
2
2
1
1
2
2
1
1
1
1
1
2
2
1
2
1
1
1
1
1
1
2
2
2
3
3
2
1
1
1
1
1
1
1
1
2
1
1
1
1
2
2
1
1
1
1
1
0

result:

ok 52 numbers

Test #4:

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

input:

203
eeeeee
ooooom
bbbbcb
yyyyaa
ssssdn
wwwgww
hhhrhr
eeexer
hhhcch
qqqyyy
lllppa
ooocvo
ooorxr
lllrjj
pppztv
ttnttt
vvnvvn
hhthhp
jjzjzj
nnrnrr
ggqgqt
uuruyu
ccdchd
ddjdhh
kktkfy
ppiipp
zzaaza
uuffuq
bbvvvb
hhkkkk
ppcccj
qqccpq
wwqqaq
aappgg
ccxxvg
eewfee
ppeupe
oodfof
kkdpkh
zzotoz
yyzkzz
iirtrt
vv...

output:

5
4
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1
3
2
2
3
3
2
1
1
1
1
2
1
1
1
2
1
1
1
1
2
2
1
1
1
1
1
1
3
3
2
3
2
2
1
1
1
1
2
2
2
2
2
1
1
1
1
1
1
2
1
1
1
1
1
1
2
1
2
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
4
4
3
2
2
2
2
1
1
1
1
1
2
1
1
1
2
2
1
1
1
1
1
1
2
1
2
1
1
1
1
1
1
2
1
1
1
1
1
1
1
2
2
2
2
1
2
2
...

result:

ok 203 numbers

Test #5:

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

input:

877
eeeeeee
oooooom
bbbbbcb
yyyyyaa
sssssdn
wwwwgww
hhhhrhr
eeeexer
hhhhcch
qqqqyyy
llllppa
oooocvo
oooorxr
llllrjj
ppppztv
tttnttt
vvvnvvn
hhhthhp
jjjzjzj
nnnrnrr
gggqgqt
uuuruyu
cccdchd
dddjdhh
kkktkfy
pppiipp
zzzaaza
uuuffuq
bbbvvvb
hhhkkkk
pppcccj
qqqccpq
wwwqqaq
aaappgg
cccxxvg
eeewfee
pppeupe
...

output:

6
5
4
4
4
3
3
3
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
2
2
2
3
2
2
2
2
1
1
1
1
1
2
2
1
1
1
1
1
1
2
1
2
1
1
1
1
1
1
3
3
3
2
2
2
2
2
2
2
4
3
3
4
4
3
2
2
2
2
2
1
1
1
1
2
1
1
1
2
2
1
1
1
1
1
1
2
2
2
2
1
1
1
1
1
2
1
1
1
1
1
1
1
3
2
2
2
1
2
2
...

result:

ok 877 numbers

Test #6:

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

input:

4140
eeeeeeee
ooooooom
bbbbbbcb
yyyyyyaa
ssssssdn
wwwwwgww
hhhhhrhr
eeeeexer
hhhhhcch
qqqqqyyy
lllllppa
ooooocvo
ooooorxr
lllllrjj
pppppztv
ttttnttt
vvvvnvvn
hhhhthhp
jjjjzjzj
nnnnrnrr
ggggqgqt
uuuuruyu
ccccdchd
ddddjdhh
kkkktkfy
ppppiipp
zzzzaaza
uuuuffuq
bbbbvvvb
hhhhkkkk
ppppcccj
qqqqccpq
wwwwqqa...

output:

7
6
5
5
5
4
4
4
4
4
4
4
4
4
4
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
3
3
2
2
2
2
2
2
2
4
3
3
4
4
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
...

result:

ok 4140 numbers

Test #7:

score: 0
Accepted
time: 37ms
memory: 28000kb

input:

21147
eeeeeeeee
oooooooom
bbbbbbbcb
yyyyyyyaa
sssssssdn
wwwwwwgww
hhhhhhrhr
eeeeeexer
hhhhhhcch
qqqqqqyyy
llllllppa
oooooocvo
oooooorxr
llllllrjj
ppppppztv
tttttnttt
vvvvvnvvn
hhhhhthhp
jjjjjzjzj
nnnnnrnrr
gggggqgqt
uuuuuruyu
cccccdchd
dddddjdhh
kkkkktkfy
pppppiipp
zzzzzaaza
uuuuuffuq
bbbbbvvvb
hhhh...

output:

8
7
6
6
6
5
5
5
5
5
5
5
5
5
5
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
3
3
3
3
3
3
3
3
3
4
3
3
4
4
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
...

result:

ok 21147 numbers

Test #8:

score: 0
Accepted
time: 74ms
memory: 154036kb

input:

2
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...

output:

99999
99999

result:

ok 2 number(s): "99999 99999"

Test #9:

score: 0
Accepted
time: 394ms
memory: 141292kb

input:

2
eeegeeeggegegeeeegegeeeeegeeegeeeggeeeggegggegeggeeeeegegeeggeeeggggeggggegegeegggegggggeggggeegggegeeegggeegeeegeeeegeggegeggeggeggegggeeeeggeggggggeggegggeegegegggeggegggeegeeggegeegegggeegegegggegggeeeggeggeeegeeggeeggeggegggeggeegegegeeggggegggggegegggeeeegegeeggeggegggegegeggeegggeeeggeeggegg...

output:

21
19

result:

ok 2 number(s): "21 19"

Test #10:

score: 0
Accepted
time: 358ms
memory: 128688kb

input:

2
egooeoegeeggegeeoegggoeoegeeeoeegoeeeogeoggoggoegoegogooooggoeeeoogooegeooegeeggeeoegeogoggegoegoggogeoogegggogegogeoogoeeeogegeoeoggoogoeeooeeogeoegggggegoeoeeggogogggeggoegeogoeogggegggeoggggooggoeoeeoegoeeggoogggggegooggoeooeoeeooeooggogeogeeoogegegoggeogeooeoggeogegoeogeeogeegogegoogggogegogeg...

output:

12
12

result:

ok 2 number(s): "12 12"

Test #11:

score: 0
Accepted
time: 333ms
memory: 127624kb

input:

2
oeoaooeggegegoeeeaeaoeoeogoeoaoeoaaeooaaogagogeaaoeoooaogooaaooogaaaoaagaeaegoeaaaoggaaaogggaeoaaaegeeeggaeoaoooaoeoeaeggoaogaeggoggeggaeoeogaeaggagaoggoaageeaoaeggaoggoagaeoaeeagoaoogogageoaeaoaggogggoeoagogaoooaeeagoeaaeaaoggaegaoegoaoaeoagageagaagoaegaaoeoeaoaeogaeagoggaoaoaeaaeogggeeegaooagega...

output:

11
9

result:

ok 2 number(s): "11 9"

Test #12:

score: 0
Accepted
time: 284ms
memory: 119544kb

input:

2
ntiaoioraegexnnnnxtxeetoogetixnoegbeitbgnrxbiatabitooeatbiibbinnxrrataxaanxnaetxrroraggriraggoobbxegootgrgterottateonbtgxnxnrgoaanrgnbagetioagnbgrarbexatbggenrtbearrnbgtxaatirtnagoaoibigxxiibtxorxanarrtitrbobxnttroixrenxgobrnbarnaanoxignrengrxroababxtbnbxxeinerobtibbibrngrrerebtabetxgbnioggteaxtra...

output:

5
5

result:

ok 2 number(s): "5 5"

Test #13:

score: 0
Accepted
time: 236ms
memory: 113936kb

input:

2
ojzxseudqfxhvuomjrexifhnelffzyfiprrzforwfkwqedndbhmhnogfcfirkfumbqlbjxlldhlnbizrrlnvcqagfbbdcthlgyjlhujxyytzdzzidtsnfqikankokdickzgvjgyajjmhwxfyaaydlmylhcaasplhgslxgelkidgljigipgbfrfhkigkxefcsgulblhdvbjpovwocxifzwpnwqtpkbslqndgxnwvfjverfyneyqaleydxbkovfgvgminukorptglmlrjqlaubjyedlmtkqvtopvwmfaahrk...

output:

3
3

result:

ok 2 number(s): "3 3"

Test #14:

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

input:

100
eeegeeeggegegeeeegegeeeeegeeeg
eeeggeeeggegggegeggeeeeegegeeg
geeeggggeggggegegeegggegggggeg
gggeegggegeeegggeegeeegeeeegeg
gegeggeggeggegggeeeeggegggggge
ggegggeegegegggeggegggeegeegge
geegegggeegegegggegggeeeggegge
eegeeggeeggeggegggeggeegegegee
ggggegggggegegggeeeegegeeggegg
egggegegeggeeggge...

output:

7
5
6
5
6
6
4
6
6
4
6
10
7
5
10
6
10
8
5
10
7
10
7
6
11
10
8
7
5
5
7
8
5
6
6
10
5
7
8
8
8
6
7
6
9
6
6
6
4
5
5
4
6
8
8
6
6
6
4
9
11
7
5
12
8
8
9
7
5
6
10
6
6
7
7
9
5
7
11
6
8
8
5
5
10
6
9
6
9
8
5
5
6
6
6
8
6
7
9
6

result:

ok 100 numbers

Test #15:

score: -100
Wrong Answer
time: 1ms
memory: 13036kb

input:

500
egooeoegeeggegeeoegggoeoegeeeo
eegoeeeogeoggoggoegoegogoooogg
oeeeoogooegeooegeeggeeoegeogog
gegoegoggogeoogegggogegogeoogo
eeeogegeoeoggoogoeeooeeogeoegg
gggegoeoeeggogogggeggoegeogoeo
gggegggeoggggooggoeoeeoegoeegg
oogggggegooggoeooeoeeooeooggog
eogeeoogegegoggeogeooeoggeogeg
oeogeeogeegogegoo...

output:

egoeeooogeeggoggoeeoooeoeeoooe

result:

wrong output format Expected integer, but "egoeeooogeeggoggoeeoooeoeeoooe" found