题解:P12099 [NERC2024] Hunting Hoglins in Hogwarts
找一个随机移动的球,一个很显然的想法就是二分。假设现在球在
等这个操作的困难在于,如果球所在的区间已经放了一面墙,它有
这时就可以想到利用听到巨响的时间。假设现在球可能出现在
注意到,如果一开始是从左到右放置的,放完
这种方法相较于二分来说有更大的容错,且可以更好利用题目中随机的性质。实测平均需要
int i,rey; ll l,r;
init();
loop : ;
vector<pair<ll,ll>>(1,make_pair(1,n)).swap(nxt);
while(1) {
pos.swap(nxt);
vector<pair<ll,ll>>(0).swap(nxt);
for(i=0;i<int(pos.size());++i) {
ll mid=pos[i].first+pos[i].second>>1;
if(pos[i].first<mid)
nxt.push_back(make_pair(pos[i].first,mid-1));
if(mid<pos[i].second)
nxt.push_back(make_pair(mid+1,pos[i].second));
rey=magic(mid);
if(rey==2) goto loop;
else if(rey==3) return 0;
else if(rey==1) break;
}
if(i==pos.size()) { while(magic(0)!=1); }
reverse(nxt.begin(),nxt.end());
}
goto loop;