题解
1.坐标i,j中,一定有一个值为n-1
2.所以另外一个数就是n-1在二进制表示下0的位置变成1,1的位置变成0的数
3.如何找到最大值?答:自己和自己或找出最大的
4.如何找到另外一个数?答:找出和最大值或最大的,再找出这些数中最小的
code
#include<bits/stdc++.h>
using namespace std;
char query(int a,int b,int c,int d)
{
printf("? %d %d %d %d\n",a,b,c,d);
fflush(stdout);
char x;
cin>>x;
fflush(stdout);
return x;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int maxs=0;
for(int i=1;i<n;i++)
{
char res=query(maxs,maxs,i,i);
if(res=='<')
{
maxs=i;
}
}
vector<int> q;
q.push_back(0);
for(int i=1;i<n;i++)
{
int now=q[0];
char res=query(now,maxs,i,maxs);
if(res=='<')
{
q.clear();
q.push_back(i);
}
else if(res=='=') q.push_back(i);
}
int mins=q[0];
for(int i=1;i<q.size();i++)
{
char res=query(mins,mins,q[i],q[i]);
if(res=='>')
{
mins=q[i];
}
}
printf("! %d %d\n",mins,maxs);
}
return 0;
}
标签:int,Wizard,cin,Bitwise,char,printf,Operation,mins
From: https://www.cnblogs.com/pure4knowledge/p/18252973