QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#489505#8819. CNOI KnowledgepeterAC ✓32ms3968kbC++141.3kb2024-07-24 20:44:532024-07-24 20:44:54

Judging History

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

  • [2024-07-24 20:44:54]
  • 评测
  • 测评结果:AC
  • 用时:32ms
  • 内存:3968kb
  • [2024-07-24 20:44:53]
  • 提交

answer

// Problem: CNOI Knowledge
// Contest: Virtual Judge - QOJ
// URL: https://vjudge.net/problem/QOJ-8819
// Memory Limit: 1014 MB
// Time Limit: 1000 ms

#include <bits/stdc++.h>

using namespace std;

const int maxn=1e3+5;
int a[maxn],c[maxn],f[maxn],cnt=0;
int nxt[maxn],g[maxn];
bool vis[maxn];

int ask(int l,int r){
	printf("? %d %d\n",l,r);
	fflush(stdout);
	int x;
	scanf("%d",&x);
	return x;
}

int main(){
	
	int n;
	
	scanf("%d",&n);
	
	for(int i=1;i<=n;i++){
		int l=1,r=i,ret=0;
		while(l<=r){
			int mid=(l+r)>>1;
			if(ask(mid,i)-g[mid]<=i-mid){
				ret=mid;
				l=mid+1;
			}else r=mid-1;
		}
		if(!ret) a[i]=++cnt;
		else a[i]=a[ret];
		// for(int j=1;j<=i;j++) printf("%d ",a[j]);
		// puts("");
		for(int j=1;j<=i;j++){
			c[j]=a[i-j+1];
			vis[j]=0;
		}
		int now=0;
		for(int j=2;j<=i;j++){
			while(now&&c[now+1]!=c[j]) now=nxt[now];
			if(c[now+1]==c[j]) now++;
			nxt[j]=now;
		}
		for(int j=1;j<=i;j++){
			f[j]=f[j-1];
			if(nxt[j]&&(!vis[nxt[j]])){// 这部分开始这个后缀已经计算过。
				vis[nxt[j]]=1;
				continue;
			}
			f[j]++;
		}
		for(int j=1;j<=i;j++) g[i-j+1]+=f[j];
	}
	
	printf("! ");
	for(int i=1;i<=n;i++) printf("%d ",a[i]);
	puts("");
	fflush(stdout);
	
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3884kb

input:

12
1
3
3
6
6
10
6
15
10
21
10
20
15
14
6
9
14
34
43
19
5
2
1
19
5
13
8
25
9
19

output:

? 1 1
? 1 2
? 2 3
? 1 3
? 2 4
? 1 4
? 3 5
? 1 5
? 3 6
? 1 6
? 4 7
? 2 7
? 3 7
? 4 8
? 6 8
? 5 8
? 5 9
? 2 9
? 1 9
? 5 10
? 8 10
? 9 10
? 10 10
? 6 11
? 9 11
? 7 11
? 8 11
? 6 12
? 9 12
? 7 12
! 1 2 3 4 5 6 2 5 7 7 5 6 

result:

ok Accepted. 30 queries used.

Test #2:

score: 0
Accepted
time: 15ms
memory: 3908kb

input:

1000
1
3
2
1
3
2
1
5
11
7
8
2
1
7
2
1
11
5
7
11
5
3
15
5
2
1
15
3
2
1
19
4
2
1
17
4
2
1
20
4
2
1
15
4
2
1
23
9
13
15
23
11
5
3
31
11
5
3
36
11
5
2
1
45
15
3
2
1
48
15
5
11
7
58
16
5
2
1
59
16
5
12
8
69
21
8
2
1
69
20
8
3
5
79
20
8
2
1
76
20
8
3
5
87
26
8
3
5
88
26
8
2
1
100
24
8
3
5
98
24
8
2
1
111
...

output:

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

result:

ok Accepted. 8793 queries used.

Test #3:

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

input:

1000
1
2
1
2
1
5
7
5
2
1
7
2
1
7
16
11
11
5
2
1
11
3
2
1
14
3
2
1
11
3
2
1
13
4
2
1
7
4
2
1
15
51
32
23
20
8
2
1
28
12
5
8
31
12
5
2
1
38
11
3
2
1
38
9
3
2
1
44
14
5
9
44
14
5
2
1
54
15
3
2
1
56
14
3
2
1
65
17
4
2
1
66
17
7
11
76
17
8
2
1
76
20
8
3
5
87
26
8
2
1
88
26
8
3
5
102
26
8
3
5
102
26
8
2
1...

output:

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

result:

ok Accepted. 8781 queries used.

Test #4:

score: 0
Accepted
time: 17ms
memory: 3896kb

input:

1000
1
3
3
5
5
2
1
5
11
8
8
2
1
8
3
5
12
5
2
1
11
3
2
1
16
5
11
7
15
5
3
20
7
3
5
21
8
2
1
27
7
2
1
26
4
2
1
31
5
3
2
1
27
5
3
2
1
31
5
3
2
1
26
5
3
2
1
35
11
17
26
35
14
5
3
44
15
5
2
1
44
15
3
2
1
53
19
4
2
1
55
19
7
14
9
63
19
8
3
5
62
19
8
2
1
69
24
7
2
1
70
23
7
15
11
81
23
8
3
5
83
25
7
3
5
99...

output:

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

result:

ok Accepted. 8788 queries used.

Test #5:

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

input:

1000
1
2
1
2
1
5
7
5
3
8
2
1
7
2
1
9
3
2
1
5
3
2
1
6
3
2
1
11
27
20
13
17
8
2
1
20
8
3
5
26
8
3
5
26
8
2
1
31
11
5
8
28
11
5
3
36
11
5
3
34
9
5
3
41
11
5
3
45
14
5
2
1
55
15
5
11
8
56
16
5
2
1
65
21
8
3
5
65
20
8
2
1
75
20
8
3
5
76
21
8
3
5
87
26
8
2
1
85
24
8
3
5
95
24
8
2
1
92
26
8
3
5
101
32
12
5...

output:

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

result:

ok Accepted. 8779 queries used.

Test #6:

score: 0
Accepted
time: 15ms
memory: 3896kb

input:

1000
1
2
1
3
5
5
2
1
5
12
8
8
2
1
8
3
5
12
5
2
1
12
5
8
16
5
2
1
16
5
12
8
21
8
3
5
21
7
3
5
26
7
3
5
23
7
3
5
27
9
5
3
27
11
5
2
1
34
11
5
8
34
11
5
3
41
15
5
3
41
14
5
3
48
11
5
3
52
14
5
2
1
63
19
7
2
1
66
20
7
15
11
77
21
8
2
1
79
21
7
2
1
91
27
7
16
11
91
27
8
2
1
104
26
8
3
5
103
26
8
2
1
115
...

output:

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

result:

ok Accepted. 8782 queries used.

Test #7:

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

input:

1000
1
3
2
1
3
2
1
5
12
8
2
1
7
2
1
11
5
7
11
5
3
15
5
2
1
15
3
2
1
22
41
61
50
23
8
3
5
29
7
3
5
29
8
2
1
37
13
23
29
37
13
5
3
45
11
5
3
44
9
5
3
51
11
5
3
47
11
5
3
57
15
29
47
38
58
17
6
13
9
69
22
9
3
6
68
21
9
3
6
80
21
9
3
5
80
23
9
18
13
94
30
9
3
6
94
31
9
2
1
108
30
9
17
13
110
28
9
17
13
...

output:

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

result:

ok Accepted. 8758 queries used.

Test #8:

score: 0
Accepted
time: 17ms
memory: 3908kb

input:

1000
1
3
2
1
5
9
6
13
9
9
3
5
7
3
5
11
5
2
1
11
3
2
1
17
37
29
22
17
5
2
1
22
7
2
1
19
4
2
1
27
63
44
35
28
9
15
21
35
13
6
9
33
13
5
2
1
42
13
5
8
43
11
5
3
52
15
5
3
54
16
5
2
1
65
17
37
29
65
18
5
3
76
23
7
3
5
77
23
9
17
89
23
9
3
6
87
23
9
2
1
100
29
7
2
1
100
30
7
17
11
115
30
9
17
23
116
30
9...

output:

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

result:

ok Accepted. 8721 queries used.

Test #9:

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

input:

1000
1
3
3
6
5
2
1
5
13
8
8
2
1
9
18
24
13
5
2
1
13
31
24
18
18
5
3
17
5
3
23
9
17
23
9
2
1
29
7
2
1
27
4
2
1
32
5
3
2
1
29
5
3
2
1
33
5
3
2
1
33
9
15
24
42
15
24
33
42
17
6
13
9
51
17
5
2
1
51
17
5
13
9
63
23
8
2
1
67
23
7
2
1
80
23
7
16
11
83
21
8
2
1
95
26
8
3
5
95
29
62
44
35
110
30
9
3
5
111
30...

output:

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

result:

ok Accepted. 8743 queries used.

Test #10:

score: 0
Accepted
time: 32ms
memory: 3876kb

input:

1000
1
2
1
3
5
6
9
6
13
9
9
2
1
7
2
1
12
22
17
11
5
3
15
5
3
17
36
29
22
23
9
2
1
23
9
18
13
30
8
3
5
30
8
2
1
36
11
5
8
33
11
5
3
41
11
5
3
41
12
27
32
51
17
5
2
1
51
18
5
13
8
61
18
6
13
62
18
5
2
1
74
24
9
18
13
75
23
9
17
13
87
23
9
3
5
88
23
7
3
5
100
28
7
3
5
101
28
9
15
21
115
27
9
3
5
115
28...

output:

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

result:

ok Accepted. 8736 queries used.

Test #11:

score: 0
Accepted
time: 13ms
memory: 3892kb

input:

1000
1
2
1
3
5
5
2
1
5
12
8
9
18
9
3
6
13
5
2
1
13
5
8
18
6
13
18
5
3
24
8
2
1
24
9
18
13
30
8
3
5
29
8
2
1
36
11
3
2
1
36
12
22
29
45
12
29
23
17
46
13
5
3
55
17
5
3
53
15
5
3
64
15
35
28
21
64
17
6
13
9
76
23
9
2
1
76
24
8
3
5
88
24
9
18
13
89
24
9
2
1
102
31
9
18
13
102
30
8
2
1
116
30
8
3
5
115
...

output:

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

result:

ok Accepted. 8741 queries used.

Extra Test:

score: 0
Extra Test Passed