1 条题解
-
0
一个容易想到的事情是二分。
我们每次询问平面的一半,能够在的次数找到一个雷。
那么只需要次就可以找到所有的雷。
一个优化是:当当前平面的雷数或者平面大小的时候就不用继续问了。
非常好写。
#include<bits/stdc++.h> #define ll long long #define maxn 100005 #define mod 998244353 using namespace std; int n,m; int X,Y; void dfs(int l1,int r1,int l2,int r2,int m) { if (m==0) return; if ((l2-l1+1)*(r2-r1+1)==m) { for (int i=l1;i<=l2;i++) for (int j=r1;j<=r2;j++) X^=i,Y^=j; return; } if(l2-l1>=r2-r1) { int mid=(l1+l2)/2; cout<<1<<" "<<l1<<" "<<r1<<" "<<mid<<" "<<r2<<endl; int x; cin>>x; dfs(l1,r1,mid,r2,x); dfs(mid+1,r1,l2,r2,m-x); } else { int mid=(r1+r2)/2; cout<<1<<" "<<l1<<" "<<r1<<" "<<l2<<" "<<mid<<endl; int x; cin>>x; dfs(l1,r1,l2,mid,x); dfs(l1,mid+1,l2,r2,m-x); } } int main() { cin>>n>>m; dfs(1,1,n,n,m); cout<<2<<" "<<X<<" "<<Y<<endl; }
信息
- ID
- 1757
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 163
- 已通过
- 12
- 上传者