QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#879828 | #9571. Border Jump 2 | ucup-team5077 | WA | 317ms | 150176kb | C++14 | 4.2kb | 2025-02-02 15:53:33 | 2025-02-02 15:53:34 |
Judging History
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];
void solve(){
scanf("%s", s+1);
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);
while(T--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 28540kb
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: 31044kb
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: 1ms
memory: 27988kb
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: 0ms
memory: 27136kb
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: 30932kb
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: 28388kb
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: 36ms
memory: 28592kb
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: 72ms
memory: 150176kb
input:
2 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...
output:
99999 99999
result:
ok 2 number(s): "99999 99999"
Test #9:
score: 0
Accepted
time: 317ms
memory: 141420kb
input:
2 eeegeeeggegegeeeegegeeeeegeeegeeeggeeeggegggegeggeeeeegegeeggeeeggggeggggegegeegggegggggeggggeegggegeeegggeegeeegeeeegeggegeggeggeggegggeeeeggeggggggeggegggeegegegggeggegggeegeeggegeegegggeegegegggegggeeeggeggeeegeeggeeggeggegggeggeegegegeeggggegggggegegggeeeegegeeggeggegggegegeggeegggeeeggeeggegg...
output:
21 19
result:
ok 2 number(s): "21 19"
Test #10:
score: 0
Accepted
time: 295ms
memory: 135836kb
input:
2 egooeoegeeggegeeoegggoeoegeeeoeegoeeeogeoggoggoegoegogooooggoeeeoogooegeooegeeggeeoegeogoggegoegoggogeoogegggogegogeoogoeeeogegeoeoggoogoeeooeeogeoegggggegoeoeeggogogggeggoegeogoeogggegggeoggggooggoeoeeoegoeeggoogggggegooggoeooeoeeooeooggogeogeeoogegegoggeogeooeoggeogegoeogeeogeegogegoogggogegogeg...
output:
12 12
result:
ok 2 number(s): "12 12"
Test #11:
score: 0
Accepted
time: 285ms
memory: 127664kb
input:
2 oeoaooeggegegoeeeaeaoeoeogoeoaoeoaaeooaaogagogeaaoeoooaogooaaooogaaaoaagaeaegoeaaaoggaaaogggaeoaaaegeeeggaeoaoooaoeoeaeggoaogaeggoggeggaeoeogaeaggagaoggoaageeaoaeggaoggoagaeoaeeagoaoogogageoaeaoaggogggoeoagogaoooaeeagoeaaeaaoggaegaoegoaoaeoagageagaagoaegaaoeoeaoaeogaeagoggaoaoaeaaeogggeeegaooagega...
output:
11 9
result:
ok 2 number(s): "11 9"
Test #12:
score: 0
Accepted
time: 244ms
memory: 120992kb
input:
2 ntiaoioraegexnnnnxtxeetoogetixnoegbeitbgnrxbiatabitooeatbiibbinnxrrataxaanxnaetxrroraggriraggoobbxegootgrgterottateonbtgxnxnrgoaanrgnbagetioagnbgrarbexatbggenrtbearrnbgtxaatirtnagoaoibigxxiibtxorxanarrtitrbobxnttroixrenxgobrnbarnaanoxignrengrxroababxtbnbxxeinerobtibbibrngrrerebtabetxgbnioggteaxtra...
output:
5 5
result:
ok 2 number(s): "5 5"
Test #13:
score: 0
Accepted
time: 216ms
memory: 106256kb
input:
2 ojzxseudqfxhvuomjrexifhnelffzyfiprrzforwfkwqedndbhmhnogfcfirkfumbqlbjxlldhlnbizrrlnvcqagfbbdcthlgyjlhujxyytzdzzidtsnfqikankokdickzgvjgyajjmhwxfyaaydlmylhcaasplhgslxgelkidgljigipgbfrfhkigkxefcsgulblhdvbjpovwocxifzwpnwqtpkbslqndgxnwvfjverfyneyqaleydxbkovfgvgminukorptglmlrjqlaubjyedlmtkqvtopvwmfaahrk...
output:
3 3
result:
ok 2 number(s): "3 3"
Test #14:
score: 0
Accepted
time: 3ms
memory: 27280kb
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: 6ms
memory: 27488kb
input:
500 egooeoegeeggegeeoegggoeoegeeeo eegoeeeogeoggoggoegoegogoooogg oeeeoogooegeooegeeggeeoegeogog gegoegoggogeoogegggogegogeoogo eeeogegeoeoggoogoeeooeeogeoegg gggegoeoeeggogogggeggoegeogoeo gggegggeoggggooggoeoeeoegoeegg oogggggegooggoeooeoeeooeooggog eogeeoogegegoggeogeooeoggeogeg oeogeeogeegogegoo...
output:
2 7 4 5 5 3 4 4 3 3 5 5 4 5 4 4 4 4 5 3 5 7 3 3 3 3 8 3 4 6 4 5 4 3 3 6 3 3 4 2 3 5 3 5 4 4 3 4 3 4 4 4 5 4 4 5 4 3 4 4 3 4 5 5 4 4 4 5 4 4 3 3 3 4 3 5 4 6 6 6 3 6 4 5 3 4 3 4 4 3 4 4 3 3 4 4 4 3 4 4 4 5 6 3 3 4 3 5 4 5 4 3 3 5 7 5 7 4 3 2 3 7 4 4 6 5 5 4 5 4 6 2 2 5 6 6 7 3 2 4 4 4 5 5 6 4 3 3 3 4 ...
result:
wrong answer 242nd numbers differ - expected: '4', found: '3'