QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#596698 | #8819. CNOI Knowledge | ucup-team173# | AC ✓ | 133ms | 4292kb | C++20 | 2.3kb | 2024-09-28 16:18:32 | 2024-09-28 16:18:32 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn=4444;
struct SAM{
struct node{
unordered_map<int,int>ch;
int par,val;
node(int val=0):par(0),val(val){ch.clear();}
}sam[maxn];
int last,m;
int sum;
void append(int w){
// cerr<<"(#"<<w<<")";
int p=last,np,q,nq;
sam[last=np=++m]=node(sam[p].val+1);
while(p&&sam[p].ch.count(w)==0)sam[p].ch[w]=np,p=sam[p].par;
if(p==0){sam[np].par=1;return;}
q=sam[p].ch[w];
if(sam[p].val+1==sam[q].val)sam[np].par=q;
else{
sam[nq=++m]=sam[q];
sam[nq].val=sam[p].val+1;
sam[q].par=sam[np].par=nq;
while(p&&sam[p].ch.count(w)&&sam[p].ch[w]==q)sam[p].ch[w]=nq,p=sam[p].par;
}
}
void clear(){
last=1;
for(int i=1;i<=m;i++){
sam[i]=node();
}
m=1;
sum=1;
}
int get(){
int ans=0;
for(int i=2;i<=m;i++){
ans+=sam[i].val;
if(sam[i].par){
ans-=sam[sam[i].par].val;
}
}
return ans;
}
}Sam;
int n;
int a[maxn];
int tot;
int calc(int l,int r){
Sam.clear();
for(int i=l;i<=r;i++){
Sam.append(a[i]);
// cerr<<Sam.sam[Sam.last].val<<"%"<<Sam.m<<"%"<<Sam.last<<"%"<<Sam.sam[Sam.last].par<<"% ";
}
int ans=Sam.get();
// cerr<<ans<<" "<<l<<" "<<r<<"\n";
return ans;
}
void solve() {
tot=0;
cin>>n;
a[1]=++tot;
for(int i=2;i<=n;i++){
int l=1,r=i;
int ans=i;
while(l<=r){
int mid=l+r>>1;
cout<<"? "<<mid<<" "<<i<<endl;
int tmp;
cin>>tmp;
if(calc(mid,i-1)+(i-mid+1)==tmp){
ans=mid;
r=mid-1;
}
else{
l=mid+1;
}
}
if(ans==1){
a[i]=++tot;
}
else a[i]=a[ans-1];
}
cout<<"! ";
for(int i=1;i<=n;i++){
cout<<a[i];
if(i!=n)cout<<" ";
}
cout<<endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t = 1;
// cin >> t;
while(t--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3848kb
input:
12 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 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. 29 queries used.
Test #2:
score: 0
Accepted
time: 122ms
memory: 4092kb
input:
1000 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 31...
output:
? 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 ? 14 15 ...
result:
ok Accepted. 8792 queries used.
Test #3:
score: 0
Accepted
time: 111ms
memory: 4060kb
input:
1000 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 1...
output:
? 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 ? 12 15...
result:
ok Accepted. 8780 queries used.
Test #4:
score: 0
Accepted
time: 97ms
memory: 4056kb
input:
1000 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 3...
output:
? 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 ? 14 ...
result:
ok Accepted. 8787 queries used.
Test #5:
score: 0
Accepted
time: 124ms
memory: 4220kb
input:
1000 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 2...
output:
? 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 15 ? 14...
result:
ok Accepted. 8778 queries used.
Test #6:
score: 0
Accepted
time: 98ms
memory: 4292kb
input:
1000 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 31...
output:
? 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 ? 12 1...
result:
ok Accepted. 8781 queries used.
Test #7:
score: 0
Accepted
time: 87ms
memory: 4008kb
input:
1000 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 12...
output:
? 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 ? 15 15 ...
result:
ok Accepted. 8757 queries used.
Test #8:
score: 0
Accepted
time: 105ms
memory: 3912kb
input:
1000 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 2...
output:
? 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 ? 10 1...
result:
ok Accepted. 8720 queries used.
Test #9:
score: 0
Accepted
time: 133ms
memory: 3988kb
input:
1000 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 8...
output:
? 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 ? 8 1...
result:
ok Accepted. 8742 queries used.
Test #10:
score: 0
Accepted
time: 107ms
memory: 4272kb
input:
1000 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 8...
output:
? 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 15 ? 8 ...
result:
ok Accepted. 8735 queries used.
Test #11:
score: 0
Accepted
time: 107ms
memory: 4204kb
input:
1000 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 30...
output:
? 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 15 ? 8 ...
result:
ok Accepted. 8740 queries used.
Extra Test:
score: 0
Extra Test Passed