QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#26202 | #1281. Longest Common Subsequence | Wu_Ren | AC ✓ | 200ms | 66348kb | C++17 | 1.5kb | 2022-04-06 21:47:13 | 2022-04-29 03:20:47 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int n,m,o,suma[1000010],sumb[1000010],La[1000010],Ra[1000010],Lb[1000010],Rb[1000010],a[1000010],b[1000010];
struct seg{
int tr[4000010],n,B;
void build(int C){
n=2*C,B=C;
for(int i=1;i<=n;i++) tr[i]=-2e9;
}
void add(int x,int c){
for(int i=x+B;i<=n;i+=(i&-i)) tr[i]=max(tr[i],c);
}
int qry(int x){
int res=-2e9;
for(int i=x+B;i;i-=(i&-i)) res=max(res,tr[i]);
return res;
}
}T[2];
void sol(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),suma[i]=suma[i-1]+(a[i]==2);
for(int j=1;j<=m;j++) scanf("%d",&b[j]),sumb[j]=sumb[j-1]+(b[j]==2);
La[0]=0,o=0;
for(int i=1;i<=n;i++) La[i]=n+1;
for(int i=1;i<=n;i++) if(a[i]==1) La[++o]=i;
Lb[0]=0,o=0;
for(int i=1;i<=m;i++) Lb[i]=m+1;
for(int i=1;i<=m;i++) if(b[i]==1) Lb[++o]=i;
Ra[0]=n+1,o=0;
for(int i=1;i<=n;i++) Ra[i]=0;
for(int i=n;i>=1;i--) if(a[i]==3) Ra[++o]=i;
Rb[0]=m+1,o=0;
for(int i=1;i<=m;i++) Rb[i]=0;
for(int i=m;i>=1;i--) if(b[i]==3) Rb[++o]=i;
T[0].build(n+m);
T[1].build(n+m);
int ans=0;
for(int j=min(n,m),i=0;j>=0;j--){
while(i<=min(n,m)&&La[i]<Ra[j]&&Lb[i]<Rb[j]){
T[0].add(suma[La[i]]-sumb[Lb[i]],-sumb[Lb[i]]+i);
T[1].add(sumb[Lb[i]]-suma[La[i]],-suma[La[i]]+i);
i++;
}
ans=max(T[0].qry(suma[Ra[j]-1]-sumb[Rb[j]-1])+sumb[Rb[j]-1]+j,ans);
ans=max(T[1].qry(sumb[Rb[j]-1]-suma[Ra[j]-1])+suma[Ra[j]-1]+j,ans);
}
printf("%d\n",ans);
}
int main(){
int _;
scanf("%d",&_);
while(_--) sol();
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5888kb
input:
3 3 3 1 2 3 1 2 3 3 3 1 1 1 1 1 2 3 3 1 3 2 1 2 3
output:
3 2 2
result:
ok 3 tokens
Test #2:
score: 0
Accepted
time: 167ms
memory: 5816kb
input:
139889 1 10 2 2 1 2 2 3 1 1 2 3 3 7 1 3 2 3 3 1 1 2 2 6 1 2 1 3 1 1 1 1 8 7 3 1 3 3 2 2 3 1 3 2 2 1 3 3 3 10 3 3 2 1 1 2 2 1 1 1 1 3 1 1 5 2 1 2 1 3 1 1 2 1 4 1 3 3 3 3 7 2 3 1 2 1 2 2 3 3 2 6 2 3 1 1 2 1 3 1 3 1 4 1 3 1 1 3 4 2 2 3 2 3 1 3 1 8 1 1 1 3 1 3 3 3 1 4 1 1 3 3 3 1 10 10 3 1 2 1 2 2 2 2 1...
output:
1 1 1 4 2 2 0 1 2 1 1 1 1 6 1 0 1 2 2 3 4 4 1 1 1 0 2 2 3 4 4 1 1 3 2 1 2 1 3 1 1 1 3 1 1 2 3 2 1 3 1 4 1 2 2 1 3 1 1 2 3 1 2 4 4 2 2 1 1 1 2 4 3 2 1 1 2 3 1 2 2 1 5 2 4 2 1 2 3 2 5 2 1 3 1 3 1 2 1 2 2 4 3 2 0 1 1 3 2 3 2 2 0 0 2 3 1 2 0 4 1 4 1 1 3 1 1 0 1 1 1 1 3 2 2 2 3 3 3 1 2 2 3 2 1 1 3 3 2 3 ...
result:
ok 139889 tokens
Test #3:
score: 0
Accepted
time: 179ms
memory: 5844kb
input:
100000 10 10 1 1 1 3 1 2 1 1 1 1 3 1 1 2 1 2 2 2 1 3 10 10 1 1 3 2 3 1 1 2 3 2 3 3 1 3 2 1 1 1 2 1 10 10 2 2 3 3 1 2 3 1 3 2 2 3 2 3 2 1 2 3 3 1 10 10 3 3 1 1 1 3 2 3 2 2 2 2 1 2 2 2 2 2 3 3 10 10 3 3 3 2 1 3 3 1 3 1 1 3 1 1 3 2 1 1 1 3 10 10 1 1 2 1 3 1 1 3 1 3 2 1 1 1 1 3 2 1 2 2 10 10 2 2 3 1 2 2...
output:
4 5 5 4 4 5 4 5 4 7 4 5 5 4 4 5 4 6 6 6 3 4 4 4 5 4 4 4 6 4 5 5 5 3 5 6 5 4 4 4 4 5 5 3 4 4 3 7 3 4 5 4 4 4 3 5 5 5 4 6 5 3 5 5 3 3 3 5 3 4 4 5 4 4 3 4 5 6 5 6 7 5 4 5 4 4 6 5 4 5 6 5 4 3 3 4 3 4 4 4 4 4 5 4 5 5 5 4 2 6 3 5 5 5 5 4 4 4 4 4 5 5 4 4 5 6 5 4 3 4 4 4 3 4 3 3 4 5 5 3 4 6 4 3 4 5 6 5 5 5 ...
result:
ok 100000 tokens
Test #4:
score: 0
Accepted
time: 163ms
memory: 5768kb
input:
59509 16 16 3 3 3 2 3 3 1 3 1 2 1 1 3 1 3 2 3 3 3 1 1 3 1 1 2 2 2 2 3 3 1 1 16 17 2 1 1 1 3 1 1 2 3 3 2 1 2 3 3 3 1 1 3 1 1 1 1 1 1 3 2 3 2 1 3 1 3 19 10 1 1 3 3 2 1 1 2 3 1 2 3 3 1 3 1 2 1 1 3 1 1 3 1 1 1 2 2 1 10 14 3 3 3 1 1 3 3 1 3 1 3 1 3 2 2 3 3 1 1 3 1 3 3 3 12 20 1 1 2 2 1 1 2 1 1 2 3 1 1 1 ...
output:
6 10 7 6 8 4 6 6 7 6 6 7 5 8 8 5 8 5 8 5 5 7 6 5 5 7 6 6 8 7 5 6 6 4 7 7 6 5 7 7 7 9 5 5 8 9 7 7 6 11 8 5 7 9 6 7 8 5 5 6 6 8 8 6 9 8 4 6 7 8 7 5 8 4 5 6 8 8 5 6 6 7 7 8 5 6 7 6 7 5 10 10 6 6 8 6 6 7 5 7 5 6 6 7 3 6 10 5 6 7 7 8 7 4 4 5 7 5 7 7 6 5 6 8 6 8 6 6 7 7 8 4 4 6 7 6 5 5 6 7 8 9 6 8 7 9 8 8...
result:
ok 59509 tokens
Test #5:
score: 0
Accepted
time: 185ms
memory: 5816kb
input:
50000 20 20 1 3 3 2 1 2 1 1 1 2 3 2 1 2 2 2 2 2 1 3 3 2 2 1 3 3 1 2 3 2 1 2 2 3 2 3 1 3 2 1 20 20 1 3 2 3 2 2 1 1 1 3 3 2 2 2 3 3 3 3 3 1 2 3 2 3 1 2 1 2 2 2 1 3 1 3 1 2 3 2 3 1 20 20 1 3 1 1 2 3 1 2 2 3 3 1 2 1 1 1 2 2 1 2 2 1 1 2 2 2 1 1 1 3 1 1 3 1 2 1 2 2 3 1 20 20 3 3 3 2 1 2 2 2 1 2 2 2 2 2 3 ...
output:
8 10 11 8 7 8 9 9 9 8 7 9 9 8 8 10 8 8 10 9 8 8 8 10 9 8 9 9 8 7 5 7 8 7 9 9 9 7 10 11 12 12 8 10 11 10 9 9 10 8 8 8 9 10 8 9 9 10 9 8 8 8 10 8 9 11 9 6 9 6 9 8 8 11 9 10 9 8 8 9 10 9 9 7 9 9 9 8 9 11 6 8 8 8 8 9 9 8 9 7 8 7 6 8 10 9 9 10 8 9 8 9 11 9 8 7 8 8 10 11 6 8 9 9 8 7 9 9 10 9 7 10 8 9 9 8 ...
result:
ok 50000 tokens
Test #6:
score: 0
Accepted
time: 146ms
memory: 5812kb
input:
11967 85 68 1 2 2 2 1 3 3 1 3 3 1 2 2 1 1 2 1 2 1 3 2 2 3 2 3 1 2 3 1 2 3 2 1 1 2 1 3 1 2 3 2 1 2 2 1 2 3 2 2 1 1 1 3 2 2 2 2 3 2 1 3 3 1 3 2 3 1 2 3 2 1 2 1 3 2 3 3 2 2 3 2 2 1 1 2 1 3 3 1 2 1 1 1 2 1 2 3 1 1 3 2 1 3 3 1 1 3 1 1 3 2 2 1 2 1 1 2 3 3 2 1 2 2 3 2 1 2 3 1 3 3 3 1 3 1 3 1 3 3 1 1 3 1 2 ...
output:
32 29 25 37 25 29 22 27 31 31 22 22 31 37 23 29 27 29 22 31 26 30 25 28 26 27 24 26 25 25 28 30 23 33 33 24 21 29 23 35 26 36 26 23 24 33 31 28 25 22 31 35 32 35 26 25 30 35 28 36 27 25 25 28 33 26 30 27 23 35 32 36 30 28 26 30 31 33 28 24 33 36 21 30 33 33 29 29 22 22 29 27 20 38 29 31 30 35 34 39 ...
result:
ok 11967 tokens
Test #7:
score: 0
Accepted
time: 176ms
memory: 5892kb
input:
10000 100 100 2 3 2 2 2 3 2 3 1 1 2 2 2 2 1 2 3 3 3 2 3 3 1 3 3 2 2 3 1 1 3 3 2 3 1 3 3 1 2 2 2 3 1 2 3 1 2 2 3 3 1 1 3 1 3 1 2 2 2 2 2 3 2 1 3 1 2 2 1 2 1 2 1 2 3 2 3 1 3 2 2 1 2 1 2 3 1 3 2 1 3 3 2 2 1 1 3 1 1 2 3 1 1 2 1 1 1 3 3 2 3 3 3 2 1 3 3 2 2 2 1 3 1 3 1 3 1 2 2 1 1 2 3 2 3 3 2 1 3 2 3 3 3 ...
output:
38 40 34 35 39 40 38 40 39 39 36 38 42 41 39 37 42 43 35 37 36 34 39 40 41 40 33 36 38 38 42 38 40 42 44 42 35 41 35 44 39 45 36 37 39 38 40 40 35 37 39 39 40 43 42 37 41 41 39 44 43 35 40 41 37 40 39 39 36 38 40 39 38 39 37 35 40 40 41 38 36 42 41 38 38 38 34 43 37 36 40 39 41 46 38 42 40 37 47 39 ...
result:
ok 10000 tokens
Test #8:
score: 0
Accepted
time: 166ms
memory: 5988kb
input:
1000 1000 1000 3 1 3 3 3 2 3 1 3 2 1 1 3 1 2 2 3 3 1 2 2 3 3 3 3 1 3 3 3 1 1 2 2 1 1 2 1 2 2 2 1 3 1 3 1 1 1 2 3 1 3 1 3 1 1 2 1 1 1 3 1 2 1 1 2 3 2 2 2 1 1 2 2 1 2 2 3 3 2 1 1 2 2 3 1 3 2 1 2 3 3 1 3 2 2 3 2 1 1 3 3 3 1 3 1 2 2 3 1 3 3 3 1 3 2 3 2 3 2 1 2 1 1 1 1 3 1 3 1 2 3 3 1 1 3 3 2 3 3 2 1 1 3...
output:
366 357 362 343 351 343 357 344 343 357 343 348 353 354 358 346 349 357 347 357 344 349 353 356 354 358 350 361 356 342 353 362 350 350 351 353 364 355 355 361 348 349 354 354 347 345 346 361 349 338 360 344 353 339 351 344 343 352 345 354 335 359 355 351 350 355 354 342 347 347 356 358 364 356 351 ...
result:
ok 1000 tokens
Test #9:
score: 0
Accepted
time: 130ms
memory: 6360kb
input:
100 10000 10000 2 2 2 3 2 3 3 2 2 1 1 1 3 3 2 3 2 3 1 2 1 2 2 1 3 2 1 3 1 3 3 2 2 2 2 2 1 3 3 3 2 3 1 3 3 3 2 1 1 2 2 1 2 1 1 3 1 2 3 1 1 3 3 2 1 3 2 2 2 3 3 3 1 2 2 1 3 1 1 3 3 1 3 2 2 2 2 2 1 1 1 2 3 2 2 1 2 2 1 2 3 3 2 3 3 3 1 3 1 3 3 3 2 1 1 2 1 3 1 3 2 2 1 1 2 1 3 3 2 3 3 3 1 2 2 1 3 2 1 3 2 1 ...
output:
3431 3388 3380 3406 3403 3366 3399 3389 3390 3374 3389 3356 3419 3423 3348 3392 3366 3392 3411 3398 3436 3429 3371 3410 3414 3366 3377 3406 3384 3391 3391 3421 3400 3409 3412 3407 3429 3405 3444 3381 3414 3398 3437 3390 3381 3397 3396 3399 3412 3382 3403 3368 3393 3445 3410 3396 3393 3430 3416 3391 ...
result:
ok 100 tokens
Test #10:
score: 0
Accepted
time: 189ms
memory: 11720kb
input:
10 100000 100000 3 1 2 2 1 1 1 3 2 3 1 3 3 1 2 3 1 2 3 3 3 2 3 3 3 3 2 1 1 3 3 1 1 2 3 1 2 3 1 2 2 2 3 3 2 1 1 3 3 1 2 3 3 2 3 3 3 3 1 2 1 3 1 3 3 2 2 2 3 3 3 2 1 1 2 1 3 1 3 2 3 3 3 3 2 3 1 2 2 2 2 3 2 3 1 3 3 1 3 3 1 1 3 2 1 3 1 3 3 3 3 3 2 1 1 2 2 3 1 3 2 3 3 3 2 2 3 1 3 2 1 3 1 2 3 2 2 1 3 3 2 1...
output:
33573 33651 33656 33615 33599 33519 33490 33488 33510 33572
result:
ok 10 tokens
Test #11:
score: 0
Accepted
time: 180ms
memory: 66348kb
input:
1 1000000 1000000 1 3 2 3 1 1 2 2 2 1 2 1 3 1 1 2 2 3 2 1 3 1 1 1 3 2 2 1 1 1 2 1 2 3 3 1 2 1 2 3 3 2 1 1 1 1 1 2 2 3 2 3 2 1 3 3 1 2 2 3 1 3 3 3 2 3 2 1 2 1 2 3 2 2 1 1 1 3 1 3 2 1 1 3 1 1 2 1 1 3 3 2 1 2 3 3 3 2 1 3 3 2 3 1 1 1 1 3 3 2 3 2 1 1 2 1 3 3 3 3 3 3 2 3 1 3 2 1 2 3 1 2 3 2 2 3 3 1 1 1 1 ...
output:
333799
result:
ok "333799"
Test #12:
score: 0
Accepted
time: 200ms
memory: 66284kb
input:
1 1000000 1000000 2 1 2 1 1 3 1 3 2 2 2 2 1 3 2 2 2 3 2 1 3 3 3 2 3 1 1 1 3 2 3 2 1 1 3 1 3 2 2 3 1 1 2 3 1 1 1 2 3 3 2 1 2 2 2 3 1 2 2 3 1 2 2 1 3 2 2 1 1 2 1 1 2 1 2 1 2 2 3 1 3 3 3 2 1 1 1 1 1 1 3 1 3 1 2 1 3 3 2 3 1 1 2 1 1 1 1 1 2 2 1 1 2 3 1 3 2 3 3 3 3 1 3 1 3 1 3 1 3 2 2 2 3 3 3 2 1 3 3 3 3 ...
output:
334219
result:
ok "334219"
Test #13:
score: 0
Accepted
time: 180ms
memory: 66316kb
input:
1 1000000 1000000 1 2 2 2 2 1 3 3 3 2 1 1 3 3 1 2 3 1 2 1 2 3 2 3 1 2 1 2 1 1 2 1 1 3 2 1 1 1 2 3 2 1 1 1 1 3 3 2 3 3 1 3 1 3 3 2 1 2 3 1 2 3 2 3 2 3 2 2 3 1 3 2 2 3 3 1 1 1 3 2 2 1 2 3 1 1 1 1 1 3 1 3 1 3 1 2 2 2 1 1 2 1 1 2 1 2 1 2 1 1 3 1 1 1 3 2 1 1 1 2 3 3 3 3 2 3 2 1 1 3 1 3 2 2 1 1 3 3 1 1 3 ...
output:
333870
result:
ok "333870"
Test #14:
score: 0
Accepted
time: 176ms
memory: 66288kb
input:
1 1000000 1000000 1 1 2 3 3 3 1 1 1 1 1 3 2 3 3 1 2 3 2 1 2 3 1 3 3 1 2 2 1 2 2 2 1 1 3 2 2 3 3 3 2 1 2 2 1 1 2 2 1 3 3 1 3 3 1 1 3 2 3 2 2 2 1 1 3 1 2 2 3 3 3 3 1 3 3 1 2 3 2 1 2 1 3 1 3 2 1 2 1 3 1 1 1 2 3 2 2 1 3 1 3 3 3 2 1 2 1 2 1 2 3 3 3 1 3 1 1 2 2 3 1 1 1 2 1 1 3 2 1 1 3 3 2 2 1 3 1 2 2 2 2 ...
output:
334023
result:
ok "334023"
Test #15:
score: 0
Accepted
time: 198ms
memory: 66276kb
input:
1 1000000 1000000 2 2 3 1 3 2 3 2 2 3 3 2 3 3 1 1 1 3 3 1 2 2 3 1 1 2 1 3 3 3 1 1 1 2 1 2 3 1 1 3 3 3 3 3 1 3 3 1 2 1 1 3 2 1 2 3 3 2 3 2 3 3 1 2 3 3 3 3 2 1 2 1 1 2 1 3 2 2 3 3 3 1 2 2 3 2 3 3 2 2 1 3 3 1 2 1 2 1 1 2 2 1 1 3 2 3 3 2 3 2 1 2 1 2 2 3 3 2 3 2 1 2 1 3 2 3 1 2 2 2 1 1 3 1 2 2 1 1 1 1 1 ...
output:
334141
result:
ok "334141"