可惜没如果=_=
时光的河入海流

原题链接在这里Problem - D - Codeforces

交互题有一个很重要的考点就是定位问题,上一道交互题我们是用的二分定位,这题根据题目的特征,我们通过枚举去定位

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int n,x,y;
 4 int main(){
 5     //freopen ("d.in","r",stdin);
 6     //freopen ("d.out","w",stdout);
 7     int i,j,zt1,zt2;
 8     scanf("%d",&n);
 9     while (1){
10         for (i=0;i<n;i++){
11             printf("? 0 %d\n",i);fflush(stdout);
12             scanf("%d",&zt1);
13             if (zt1==n) break;
14         }
15         printf("? 1 %d\n",i);fflush(stdout);
16         scanf("%d",&zt1);
17         if (zt1==n){
18             y=i;
19             for (i=0;i<n-1;i++){
20                 printf("? %d %d\n",i,(y+1)%n);fflush(stdout);
21                 scanf("%d",&zt2);
22                 if (zt2==n){
23                     break;
24                 }
25             }
26             x=i;
27             printf("! %d",(y-x+n)%n);
28             break;
29         }
30         else{
31             x=0;
32             for (i=1;i<n-1;i++){
33                 printf("? %d %d\n",1,i);fflush(stdout);
34                 scanf("%d",&zt2);
35                 if (zt2==n){
36                     break;
37                 }
38             }
39             y=i;
40             printf("! %d",(y-x+n)%n);
41             break;
42         }
43     }
44     return 0;
45 }

 

posted on 2021-07-20 23:56  珍珠鸟  阅读(26)  评论(0编辑  收藏  举报