QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#312147 | #5015. 树 | czc | 3 | 30ms | 8132kb | C++14 | 2.9kb | 2024-01-23 14:21:51 | 2024-01-23 14:21:52 |
Judging History
answer
#include"tree.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
vector<int> V[maxn],V2[maxn];
vector<int> G[maxn];
int Fa[maxn];
void solve(int l,int r,int fa,int dep){
vector<int> now;
for(int i=l;i<=r;i++) now.push_back(V[dep][i]);
int sum=ask(fa,now);
int sum2=ask(Fa[fa],now);
/*
x+y=r-l+1
x-y=sum2-sum
*/
int delta=sum2-sum;
int x=(delta+r-l+1)/2;
if(!x) return ;
if(x==r-l+1){
for(int i=l;i<=r;i++){
Fa[V[dep][i]]=fa;
G[fa].push_back(V[dep][i]);
}
return ;
}
if(l==r){
Fa[V[dep][l]]=fa;
G[fa].push_back(V[dep][l]);
return ;
}
int mid=(l+r)>>1;
solve(l,mid,fa,dep);
solve(mid+1,r,fa,dep);
}
void solver(int n,int A,int B){
if(n*(n-1)/2<=5e5){
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
vector<int> now;
now.push_back(j);
if(ask(i,now)==1) answer(i,j);
}
}
return ;
}
for(int i=2;i<=n;i++){
vector<int> now;
now.push_back(i);
int dep=ask(1,now);
V[dep].push_back(i);
V2[dep].push_back(i);
if(dep==1) G[1].push_back(i),Fa[i]=1;
}
for(int i=2;i<=n;i++){//对于每个dep分别找父亲
for(auto fa:V2[i-1]){
if(!V[i].size()) break;
solve(0,V[i].size()-1,fa,i);
for(auto x:G[fa]){
V[i].erase(find(V[i].begin(),V[i].end(),x));
}
}
}
for(int i=1;i<=n;i++){
for(auto y:G[i]){
answer(i,y);
}
}
}
/*
感觉这个题目有意思。
考虑一种很 SB 的暴力。
我每个点询问其他所有点当边权为 1 时即可回答。
复杂度: n*(n-1)/2,期望 3pts。
每次多问一些。
我先确定一个点作为根总要好一些吧。
我让 1 把所有点问一次,找到他的儿子。
这样树的形态初步建成。
我感觉 sub 2 那 17pts 卡一卡就能卡过去。
一次多问一些有用的信息是不是好一些。
树是有父亲的,我找到每个点的父亲就能确定心态。
我第一次 1 问的时候相当于明确了每个点的深度。
一个点的父亲只能是他的深度-1。
考虑寻找自己父亲的过程,如果单独询问,答案要么是 1 或者是 dep*2-1 都可以直接确定。
意味着我可以像解方程一样解出哪些点是他的儿子。
然后可以用一种类似于分治的做法递归处理。
次数 nlogn,集合大小 n^2,足够我通过前三档包了。
还剩最后一部分。
最后一档有点难处理,要求我用线性的询问次数,低于 n^2 的集合大小。
先写再说吧,人类的智慧是有限度的。
干的漂亮,假了,距离不一定要走到根,他只要走到 lca 就好了。
我们要判断什么? 一段区间中至少存在一个他的儿子吗?
说不明白,判断不了,最简单的反例:1+5=3+3。
换种思路,我让他们先配好对这样一个对对应一个父亲会好做一些吗?
延续刚才的思路,我再多问一次父亲,看他们差就好了,每个点的差要么为1要么为-1就很好。
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 3
Accepted
Test #1:
score: 3
Accepted
time: 26ms
memory: 7792kb
input:
1000 500000 500000 1 2 2 3 2 4 2 5 2 6 3 7 2 8 5 9 5 10 9 11 2 12 9 13 4 14 5 15 12 16 5 17 4 18 4 19 13 20 9 21 19 22 7 23 6 24 14 25 2 26 10 27 14 28 21 29 17 30 8 31 15 32 9 33 22 34 24 35 20 36 6 37 12 38 19 39 31 40 35 41 25 42 11 43 8 44 9 45 12 46 26 47 10 48 6 49 27 50 39 51 33 52 6 53 43 54...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #2:
score: 0
Accepted
time: 23ms
memory: 7764kb
input:
1000 500000 500000 1 2 1 3 1 4 4 5 1 6 2 7 1 8 2 9 3 10 4 11 5 12 11 13 9 14 13 15 10 16 10 17 8 18 9 19 13 20 19 21 17 22 19 23 23 24 24 25 22 26 18 27 21 28 22 29 26 30 24 31 30 32 23 33 28 34 29 35 32 36 36 37 32 38 35 39 34 40 40 41 40 42 42 43 42 44 40 45 40 46 40 47 46 48 39 49 49 50 48 51 50 ...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #3:
score: 0
Accepted
time: 25ms
memory: 7900kb
input:
1000 500000 500000 498 209 498 647 498 776 498 8 498 382 498 181 498 644 498 331 498 516 498 197 498 630 498 693 498 577 498 572 498 393 498 638 498 94 498 847 498 273 498 535 498 703 498 176 498 605 498 214 498 610 498 416 498 928 498 470 498 753 498 182 498 294 498 514 498 831 498 386 498 935 498 ...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #4:
score: 0
Accepted
time: 27ms
memory: 8112kb
input:
1000 500000 500000 1 2 1 3 1 4 1 5 4 6 4 7 7 8 4 9 3 10 5 11 4 12 9 13 12 14 7 15 14 16 9 17 16 18 9 19 13 20 17 21 17 22 18 23 23 24 23 25 18 26 22 27 18 28 25 29 21 30 29 31 31 32 28 33 32 34 26 35 31 36 27 37 29 38 30 39 33 40 38 41 41 42 42 43 43 44 35 45 41 46 43 47 43 48 47 49 45 50 46 51 42 5...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #5:
score: 0
Accepted
time: 21ms
memory: 7904kb
input:
1000 500000 500000 1 2 1 3 1 4 1 5 2 6 1 7 1 8 1 9 1 10 1 11 1 12 2 13 1 14 2 15 2 16 2 17 1 18 2 19 2 20 2 21 2 22 1 23 1 24 1 25 2 26 2 27 2 28 2 29 2 30 1 31 2 32 1 33 2 34 1 35 1 36 1 37 1 38 2 39 1 40 1 41 1 42 2 43 2 44 1 45 1 46 2 47 1 48 2 49 1 50 2 51 2 52 1 53 1 54 1 55 1 56 1 57 2 58 1 59...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #6:
score: 0
Accepted
time: 23ms
memory: 7896kb
input:
1000 500000 500000 775 723 775 587 775 405 775 383 775 154 775 567 775 561 775 114 775 894 775 79 775 229 775 388 775 165 775 240 775 358 775 287 775 560 775 578 775 220 775 222 775 214 775 86 775 94 775 997 775 531 775 476 775 68 775 838 775 135 775 851 775 478 775 588 775 136 775 689 775 396 775 8...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #7:
score: 0
Accepted
time: 30ms
memory: 8132kb
input:
1000 500000 500000 1 2 1 3 3 4 4 5 4 6 5 7 7 8 8 9 8 10 10 11 10 12 12 13 12 14 13 15 15 16 16 17 16 18 17 19 18 20 20 21 21 22 21 23 23 24 24 25 25 26 25 27 27 28 27 29 29 30 29 31 30 32 31 33 33 34 34 35 34 36 36 37 37 38 38 39 39 40 40 41 41 42 41 43 43 44 44 45 44 46 45 47 47 48 48 49 49 50 50 5...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #8:
score: 0
Accepted
time: 25ms
memory: 8088kb
input:
1000 500000 500000 862 253 862 745 862 416 862 256 862 515 862 821 862 379 862 494 862 820 862 496 862 648 862 766 862 629 862 106 862 926 862 166 862 729 862 989 862 212 862 522 862 787 862 711 862 962 862 969 862 698 862 750 862 585 862 130 862 831 862 760 862 764 862 314 862 972 862 346 862 275 8...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #9:
score: 0
Accepted
time: 21ms
memory: 7828kb
input:
1000 500000 500000 1 2 2 3 3 4 4 5 5 6 6 7 4 8 4 9 5 10 8 11 8 12 3 13 7 14 6 15 6 16 9 17 2 18 1 19 8 20 9 21 8 22 7 23 7 24 5 25 2 26 2 27 3 28 5 29 4 30 9 31 5 32 8 33 1 34 3 35 10 36 7 37 9 38 9 39 9 40 2 41 4 42 6 43 8 44 4 45 10 46 4 47 8 48 9 49 7 50 2 51 5 52 9 53 8 54 1 55 9 56 9 57 9 58 5 ...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Test #10:
score: 0
Accepted
time: 28ms
memory: 7824kb
input:
1000 500000 500000 164 875 164 558 164 722 164 171 164 780 164 498 164 795 164 332 164 1000 164 553 164 354 164 479 164 109 164 802 164 706 164 236 164 958 164 607 164 757 164 197 164 11 164 507 164 572 164 357 164 314 164 653 164 15 164 814 164 9 164 468 164 398 164 232 164 753 164 591 164 478 164 ...
output:
areawavesuitbannerresortfatplasterdeclarationthesearejustrandomwords
result:
ok Orz..Orz..Orz..Orz..Orz
Subtask #2:
score: 0
Wrong Answer
Test #11:
score: 0
Wrong Answer
time: 1ms
memory: 4184kb
input:
100 3000 40000 66 95 66 60 66 93 66 69 66 82 66 24 66 64 66 84 66 42 66 22 66 67 66 54 66 90 66 26 66 41 66 18 66 43 66 68 66 36 66 88 66 33 66 29 66 79 66 6 66 48 66 47 66 8 66 38 66 61 69 97 64 30 38 86 88 14 18 10 54 81 88 25 29 2 18 21 95 46 42 80 93 91 61 62 68 35 47 23 69 17 93 28 18 31 61 70 ...
output:
Too many queries
result:
wrong answer Wrong Answer
Subtask #3:
score: 0
Wrong Answer
Test #111:
score: 0
Wrong Answer
time: 13ms
memory: 7804kb
input:
1000 50000 3000000 126 207 937 126 615 937 837 615 500 837 588 500 505 588 353 505 60 353 904 60 656 904 685 656 460 685 614 460 551 614 537 551 858 537 596 858 9 596 738 9 918 738 322 918 940 322 859 940 113 859 110 113 312 110 995 312 443 995 246 443 257 246 238 257 999 238 885 999 976 885 330 976...
output:
Too many queries
result:
wrong answer Wrong Answer
Subtask #4:
score: 0
Wrong Answer
Test #211:
score: 0
Wrong Answer
time: 5ms
memory: 7800kb
input:
990 8500 300000 1 2 1 3 1 4 1 5 2 6 2 7 2 8 3 9 3 10 3 11 4 12 4 13 4 14 5 15 5 16 5 17 6 18 6 19 6 20 7 21 7 22 7 23 8 24 8 25 8 26 9 27 9 28 9 29 10 30 10 31 10 32 11 33 11 34 11 35 12 36 12 37 12 38 13 39 13 40 13 41 14 42 14 43 14 44 15 45 15 46 15 47 16 48 16 49 16 50 17 51 17 52 17 53 18 54 18...
output:
Too many queries
result:
wrong answer Wrong Answer