QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#26744#1283. Paper-cuttingWu_RenAC ✓128ms98400kbC++172.7kb2022-04-08 08:54:542022-04-29 04:20:13

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-29 04:20:13]
  • 评测
  • 测评结果:AC
  • 用时:128ms
  • 内存:98400kb
  • [2022-04-08 08:54:54]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
char a[1000010],b[1000010];
int n,m,x[1000010],y[1000010],l[1000010],r[1000010],X,Y,L,R,fx[4][2]={{0,1},{0,-1},{1,0},{-1,0}},lst[1000010];
bool vis[1000010];
struct seg{
	int l,r;
};
struct bit{
	int tr[1000010];
	void clr(){
		for(int i=1;i<=m;i++) tr[i]=0;
	}
	void add(int x,int c){
		for(int i=x;i<=m;i+=(i&-i)) tr[i]+=c;
	}
	int qry(int x){
		int res=0;
		for(int i=x;i;i-=(i&-i)) res+=tr[i];
		return res;
	}
}Lt,Rt;
vector<seg>ad[1000010],dl[1000010];
void dfs(int i,int j){
	X=min(i,X),Y=max(i,Y),L=min(j,L),R=max(j,R);
	vis[(i-1)*m+j]=1;
	for(int k=0;k<4;k++){
		int xx=i+fx[k][0],yy=j+fx[k][1];
		if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[(xx-1)*m+yy]=='0'&&!vis[(xx-1)*m+yy]) dfs(xx,yy);
	}
}
bool cmp(char *a,int n,int m,int x,int y){
	if(x==y) return 1;
	if(x>m||y>m) return 0;
	if(x<1||y<1) return 0;
	for(int i=1;i<=n;i++) if(a[(i-1)*m+x]!=a[(i-1)*m+y]) return 0;
	return 1;
}
void sol(char *a,int n,int m,int *l,int *r){
	static int c[2000010],t,mnc[2000010],f[1000010];
	t=0;
	for(int j=1;j<=m;j++) c[++t]=-1,c[++t]=j;
	c[++t]=-1,c[++t]=1e9,c[t+1]=0;
	for(int i=1,p,r=0;i<=t;i++){
		if(r>=i) mnc[i]=min(mnc[2*p-i],r-i+1);
		else mnc[i]=0;
		while(i-mnc[i]>=1&&i+mnc[i]<=t&&cmp(a,n,m,c[i-mnc[i]],c[i+mnc[i]])) mnc[i]++;
		if(i+mnc[i]-1>r) p=i,r=i+mnc[i]-1;
	}
	l[1]=f[1]=1,f[0]=0;
	for(int j=2;j<=m;j++){
		int p=mnc[2*j-1]/2;
		l[j]=(f[j-1]-f[j-p-1]>0);
		f[j]=f[j-1]+l[j];
	}
	r[m]=f[m]=1,f[m+1]=0;
	for(int j=m-1;j>=1;j--){
		int p=mnc[2*j+1]/2;
		r[j]=(f[j+1]-f[j+p+1]>0);
		f[j]=f[j+1]+r[j];
	}
}
void sol(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%s",a+1+(i-1)*m);
		for(int j=1;j<=m;j++) b[(j-1)*n+i]=a[(i-1)*m+j],vis[(i-1)*m+j]=0;
		ad[i].clear(),dl[i].clear();
	}
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[(i-1)*m+j]=='0'&&!vis[(i-1)*m+j]){
		X=Y=i,L=R=j,dfs(i,j);
		ad[X].push_back({L,R});
		dl[Y].push_back({L,R});
//		cerr<<"("<<X<<","<<Y<<")x("<<L<<","<<R<<")\n";
	}
	sol(a,n,m,l,r),sol(b,m,n,x,y);
//	for(int j=1;j<=m;j++) cout<<l[j]<<" ";puts("");
//	for(int j=1;j<=m;j++) cout<<r[j]<<" ";puts("");
//	for(int i=1;i<=n;i++) cout<<x[i]<<" ";puts("");
//	for(int i=1;i<=n;i++) cout<<y[i]<<" ";puts("");
	for(int j=m,x=m;j>=1;j--){
		if(r[j]) x=j;
		lst[j]=x;
	}
	int ans=2e9;
	Lt.clr(),Rt.clr();
	for(int i=1,j=1;i<=n;i++){
		while(j<=n&&(!y[j-1]||j<=i)){
			for(seg &l:ad[j]) Lt.add(l.l,1),Rt.add(l.r,1);
			j++;
		}
		if(x[i]){
			for(int k=1;k<=m;k++) if(l[k]){
				int r=lst[k],w=Lt.qry(m)-Rt.qry(k-1)-(Lt.qry(m)-Lt.qry(r));
				ans=min(ans,w);
			}
		}
		for(seg &l:dl[i]) Lt.add(l.l,-1),Rt.add(l.r,-1);
	}
	printf("%d\n",ans);
}
int main(){
	int _;
	scanf("%d",&_);
	while(_--) sol();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 12ms
memory: 50776kb

input:

3
2 5
11001
11001
5 7
1001100
0110011
0101101
0010010
1000000
3 2
11
11
11

output:

1
4
0

result:

ok 3 tokens

Test #2:

score: 0
Accepted
time: 128ms
memory: 50728kb

input:

100000
3 3
010
101
101
4 2
10
10
10
10
4 2
11
00
00
11
7 1
1
0
0
1
1
0
0
6 1
1
0
0
1
1
1
5 2
11
00
00
11
11
10 1
1
0
0
0
0
0
0
0
0
1
9 1
0
0
0
0
0
0
0
0
0
10 1
1
1
1
1
1
1
1
1
1
0
9 1
0
0
0
0
0
0
1
1
0
1 10
0010000100
7 1
0
0
0
0
0
0
0
4 2
00
00
00
00
7 1
0
1
0
0
0
0
1
10 1
1
0
0
0
0
0
0
0
0
1
9 1
1...

output:

3
1
1
1
1
1
1
1
1
1
2
1
1
2
1
1
1
1
2
2
1
1
1
0
1
0
2
1
1
1
1
2
1
0
2
2
2
1
2
1
2
2
1
0
1
1
1
2
1
1
1
1
1
1
2
0
1
1
1
1
1
1
1
1
0
3
2
1
3
1
1
3
1
1
1
2
1
1
1
1
1
3
1
1
2
0
1
1
1
2
2
1
1
1
1
2
2
1
2
2
3
2
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
2
2
2
1
1
5
1
1
1
2
1
1
2
2
2
2
2
1
1
1
2
2
2
1
1
2
2
1
3
1
1
2
1
...

result:

ok 100000 tokens

Test #3:

score: 0
Accepted
time: 83ms
memory: 50716kb

input:

10000
65 1
1
0
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
1
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
81 1
0
0
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
1
0
0
...

output:

17
17
2
4
4
11
2
3
5
4
4
9
8
5
5
6
2
7
5
8
1
3
1
12
3
1
3
9
4
9
1
4
1
5
4
3
9
2
3
4
3
5
7
7
9
10
10
3
4
1
3
13
7
11
11
14
20
4
6
3
5
3
11
5
9
2
4
9
8
10
8
5
6
5
11
7
2
4
3
6
3
4
9
2
7
4
9
5
4
5
1
2
11
2
2
2
15
3
12
3
6
3
3
11
7
4
12
4
17
4
5
5
1
8
25
3
10
4
5
9
1
3
5
2
4
3
13
4
4
8
7
9
9
1
9
3
1
2
8...

result:

ok 10000 tokens

Test #4:

score: 0
Accepted
time: 54ms
memory: 50936kb

input:

1000
977 1
1
1
1
1
1
1
0
0
1
1
0
0
0
1
0
1
1
0
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
0
1
1
1
0
1
0
0
0
1
1
1
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
1
0
0
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
0
0
0
1
0
1
0
1
0
1
1
1
0
1
0
0
0
1
0
0
1
1
0...

output:

102
167
21
25
74
28
12
62
62
42
22
88
14
77
147
11
47
89
18
48
40
6
44
235
22
130
118
31
19
60
117
42
10
2
99
36
87
9
143
37
73
67
25
12
37
28
13
54
31
90
47
108
12
107
27
18
6
20
3
29
52
89
49
17
30
13
12
41
52
49
19
117
33
10
63
32
65
35
19
16
19
28
64
67
68
34
103
46
31
67
22
41
117
27
113
112
42...

result:

ok 1000 tokens

Test #5:

score: 0
Accepted
time: 63ms
memory: 51620kb

input:

100
8148 1
1
1
1
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0...

output:

681
33
1156
568
237
528
311
229
1604
547
872
271
794
491
557
322
241
633
807
304
160
435
636
355
604
95
27
962
160
761
24
23
711
294
356
14
472
207
428
2371
539
1007
201
140
158
352
162
188
437
771
1286
1003
67
560
592
1002
408
238
71
74
359
1736
717
630
462
581
790
745
80
656
562
441
737
838
322
32...

result:

ok 100 tokens

Test #6:

score: 0
Accepted
time: 72ms
memory: 57952kb

input:

10
92831 1
0
1
0
0
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
1
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
0
0
1
0
0
1
0
1
0
0
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
1
0
0
0
1
1
0
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1...

output:

5125
5258
4511
3428
198
5218
11694
9294
13007
1583

result:

ok 10 tokens

Test #7:

score: 0
Accepted
time: 79ms
memory: 57740kb

input:

10
53270 1
0
1
1
0
1
1
1
1
0
1
0
0
1
1
1
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
0
1
1
0
1
1
0
1
1
0
0
0
1
0
0
0
1
0
1
1
0
1
1
1
0
0
0
1
0
1
1
0
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
1
1
0
0
0
1
1
0
1
1
1
1
1
0
0
0
1
1
1
1
1
0
0
1
0
0
0
0
0
0
1
1
0
1
1
0
0
1
1
0
0
1
0
1
1
1
0
0
1
1
1
0
0
1
0
1
1
0...

output:

6730
5017
389
2178
4679
5753
17391
4823
4599
1961

result:

ok 10 tokens

Test #8:

score: 0
Accepted
time: 24ms
memory: 58772kb

input:

1
1000 1000
011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110...

output:

8

result:

ok "8"

Test #9:

score: 0
Accepted
time: 27ms
memory: 59568kb

input:

1
1000 1000
010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010...

output:

41761

result:

ok "41761"

Test #10:

score: 0
Accepted
time: 58ms
memory: 97576kb

input:

1
1 1000000
011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110...

output:

2

result:

ok "2"

Test #11:

score: 0
Accepted
time: 76ms
memory: 98400kb

input:

1
1 1000000
010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010...

output:

196419

result:

ok "196419"

Test #12:

score: 0
Accepted
time: 42ms
memory: 79948kb

input:

1
2 500000
0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100...

output:

4

result:

ok "4"

Test #13:

score: 0
Accepted
time: 77ms
memory: 80404kb

input:

1
2 500000
0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100...

output:

242787

result:

ok "242787"

Test #14:

score: 0
Accepted
time: 28ms
memory: 55120kb

input:

1
1000 1000
001110010110101011110111111111111001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011...

output:

1964

result:

ok "1964"

Test #15:

score: 0
Accepted
time: 31ms
memory: 55152kb

input:

1
1000 1000
110111101111100011000110100110100000111100101011101010010001000101110101000101011101101111011001011100001011001101101101101101101101101000000101101101101101101101101101101101101101101101101000000101101101101101101101101101101101101101101101101000000101101101101101101101101101101101101101...

output:

31620

result:

ok "31620"

Test #16:

score: 0
Accepted
time: 23ms
memory: 54936kb

input:

1
1000 1000
001101100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110000000000000000110111101100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110...

output:

15347

result:

ok "15347"

Test #17:

score: 0
Accepted
time: 35ms
memory: 54328kb

input:

1
1000 1000
100100111100100100111100100000010011110010010011110011111100111100100100111100100000010011110010010011110011001111001001001111001000000100111100100100111100111111001111001001001111001000000100111100100100111100100100110010010011110010010011110010000001001111001001001111001111110011110010...

output:

11049

result:

ok "11049"

Test #18:

score: 0
Accepted
time: 25ms
memory: 54760kb

input:

1
1000 1000
110011111111110011111111110011101101110011111111110011111111110011001100111111111100111111111100111011011100111111111100111111111100110111101100111111111100111111111100111011011100111111111100111111111100110011001111111111001111111111001110110111001111111111001111111111001111001111111111...

output:

29274

result:

ok "29274"

Test #19:

score: 0
Accepted
time: 54ms
memory: 76236kb

input:

1
2 500000
1110011110101110101010111000001111010001010011111011100010010101111111100011100100110000110100000011111011001100110111011100101000001001101001010001100000101101100110011100100010001100001000110001011100111101010100000101010010101100100111110010011100101011001011001000110110001100100110110...

output:

110436

result:

ok "110436"

Test #20:

score: 0
Accepted
time: 56ms
memory: 74528kb

input:

1
2 500000
0010101010101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

74967

result:

ok "74967"

Test #21:

score: 0
Accepted
time: 18ms
memory: 57940kb

input:

1
10 100000
011001110011010111100111000010101101110101100001010100011000100111110100101101011011001000111101001100101100001111101011000111111011001010110101101110111011111011011110010101011010010111010000100001111100111111010100111110011011101001001010000101001100011011010011011100111100011001110011...

output:

4288

result:

ok "4288"

Test #22:

score: 0
Accepted
time: 45ms
memory: 61920kb

input:

1
5 200000
0000011000110110110101000110110111110001000011011110001111111100010101010010111111011010001111001011000111111011101111111110010101011000001111010110001000000010101001100001100100110110101100000010100011110100010001001110100011101100110010111110001111011001010101101110110110011001110111101...

output:

22390

result:

ok "22390"

Test #23:

score: 0
Accepted
time: 45ms
memory: 67140kb

input:

1
3 333333
0011101010011000011110000111111000011110000000011110000111111000011110000000011110000111111000011110000000011110000111111000011110000110110110000111100001111110000111100000000111100001111110000111100000000111100001111110000111100000000111100001111110000111100001100110000111100001111110000...

output:

17650

result:

ok "17650"

Test #24:

score: 0
Accepted
time: 19ms
memory: 56736kb

input:

1
20000 50
01111000010000101101000010110110011011010000101101
10000111101111010010111101001001100100101111010010
10000111101111010010111101001001100100101111010010
10000111101111010010111101001001100100101111010010
01111000010000101101000010110110011011010000101101
1000011110111101001011110100100110...

output:

3184

result:

ok "3184"

Test #25:

score: 0
Accepted
time: 33ms
memory: 57588kb

input:

1
25000 40
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
1111010011001011110100110010111010100010
1111010011001011110100110010111010100010
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
11...

output:

23804

result:

ok "23804"

Test #26:

score: 0
Accepted
time: 27ms
memory: 56700kb

input:

1
33333 30
010000011110000001111000000100
010000011110000001111000000100
101111100001111110000111111011
010000011110000001111000000100
101111100001111110000111111011
101111100001111110000111111011
010000011110000001111000000100
101111100001111110000111111011
101111100001111110000111111011
1011111000...

output:

22032

result:

ok "22032"

Test #27:

score: 0
Accepted
time: 45ms
memory: 59264kb

input:

1
100000 10
0000000010
1111111101
1111111101
0000000010
0000000010
1111111101
0000000010
1111111101
1111111101
0000000010
0000000010
0000000010
1111111101
1111111101
0000000010
0000000010
1111111101
1111111101
0000000010
1111111101
1111111101
1111111101
0000000010
1111111101
1111111101
0000000010
11...

output:

29876

result:

ok "29876"

Test #28:

score: 0
Accepted
time: 120ms
memory: 89860kb

input:

1
1000000 1
1
0
0
0
0
0
1
0
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
...

output:

30793

result:

ok "30793"