QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#498438#1281. Longest Common SubsequencexinhaowenAC ✓51ms40388kbC++142.0kb2024-07-30 14:45:572024-07-30 14:45:57

Judging History

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

  • [2024-07-30 14:45:57]
  • 评测
  • 测评结果:AC
  • 用时:51ms
  • 内存:40388kb
  • [2024-07-30 14:45:57]
  • 提交

answer

#include<cstdio>
#include<algorithm>
#define getchar getchar_unlocked
#define putchar putchar_unlocked
template<typename T>void read(T &x){
	x=0;bool f=0;char ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<1)+(x<<3)+(ch^48);
	if(f)x=-x;
}
void write(char x){putchar(x);}
template<typename T>void write(T x){
	if(x<0)putchar('-'),x=-x;
	char stk[24];int cnt=0;
	do stk[++cnt]=x%10+48,x/=10;while(x);
	for(;cnt;)putchar(stk[cnt--]);
}
template<typename T,typename ...Args>void read(T &x,Args &...args){read(x);read(args...);}
template<typename T,typename ...Args>void write(T x,Args ...args){write(x);write(args...);}
template<typename T>T min(T x,T y){return x<y?x:y;}
template<typename T>T max(T x,T y){return x>y?x:y;}
const int maxn=1e6+4;int T,n,m,a[maxn],b[maxn],la[maxn],lb[maxn],ra[maxn],rb[maxn],suma[maxn],sumb[maxn];
int maxx[maxn<<1],ca1,ca3,cb1,cb3,ans;
void update(int x,int val){for(;x<=n+m+1;x+=(x&(-x)))maxx[x]=max(maxx[x],val);}
int query(int x){int ans=0;for(;x;x-=(x&(-x)))ans=max(ans,maxx[x]);return ans;}
signed main(){
	read(T);
	for(;T--;){
		read(n,m);ca1=ca3=cb1=cb3=ans=0;
		for(int i=1;i<=n;++i)read(a[i]),a[i]==1&&(la[++ca1]=i),suma[i]=suma[i-1]+(a[i]==2);
		for(int i=1;i<=m;++i)read(b[i]),b[i]==1&&(lb[++cb1]=i),sumb[i]=sumb[i-1]+(b[i]==2);
		for(int i=n;i;--i)a[i]==3&&(ra[++ca3]=i);
		for(int i=m;i;--i)b[i]==3&&(rb[++cb3]=i);
		int i=min(ca1,cb1),j=0;suma[n+1]=suma[n];sumb[m+1]=sumb[m];ra[0]=n+1;rb[0]=m+1;
		for(;i>=0;--i){
			for(;j<=min(ca3,cb3)&&ra[j]>la[i]&&rb[j]>lb[i];update(m+1+suma[ra[j]]-sumb[rb[j]],j+suma[ra[j]]),++j);
			ans=max(ans,i-suma[la[i]]+query(m+1+suma[la[i]]-sumb[lb[i]]));
		}
		for(int i=1;i<=n+m+1;++i)maxx[i]=0;
		i=min(ca1,cb1),j=0;
		for(;i>=0;--i){
			for(;j<=min(ca3,cb3)&&ra[j]>la[i]&&rb[j]>lb[i];update(n+1+sumb[rb[j]]-suma[ra[j]],j+sumb[rb[j]]),++j);
			ans=max(ans,i-sumb[lb[i]]+query(n+1+sumb[lb[i]]-suma[la[i]]));
		}
		for(int i=1;i<=n+m+1;++i)maxx[i]=0;
		write(ans,'\n');
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 13524kb

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: 37ms
memory: 11564kb

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: 41ms
memory: 13624kb

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: 38ms
memory: 13612kb

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: 36ms
memory: 13588kb

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: 32ms
memory: 13576kb

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: 39ms
memory: 13536kb

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: 44ms
memory: 13592kb

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: 36ms
memory: 13760kb

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: 43ms
memory: 17236kb

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: 47ms
memory: 36288kb

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: 47ms
memory: 40388kb

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: 47ms
memory: 38232kb

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: 40ms
memory: 34188kb

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: 51ms
memory: 36272kb

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"