E - Down or Right Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)

http://codeforces.com/contest/1023/problem/E

 

交互题

 1  #include <cstdio>
 2 #include <cstdlib>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <time.h>
 6 #include <string>
 7 #include <set>
 8 #include <map>
 9 #include <list>
10 #include <stack>
11 #include <queue>
12 #include <vector>
13 #include <bitset>
14 #include <ext/rope>
15 #include <algorithm>
16 #include <iostream>
17 using namespace std;
18 #define ll long long
19 #define minv 1e-6
20 #define inf 1e9
21 #define pi 3.1415926536
22 #define E  2.7182818284
23 const ll mod=1e9+7;//998244353
24 const int maxn=1e5+10;
25 
26 char S[10];
27 int s[1000],t[1000];
28 
29 int main()
30 {
31     int n,x,y,tot,xx,yy,i;
32     scanf("%d",&n);
33     x=n,y=n,tot=2*n;
34     while (x-1+y-1>=n)
35     {
36         tot--;
37         s[tot]=x;
38         t[tot]=y;
39 
40         printf("? %d %d %d %d\n",1,1,x-1,y);
41         fflush(stdout);
42         scanf("%s",S);
43         if (strcmp(S,"YES")==0)
44             x--;
45         else
46             y--;
47     }
48     tot--;
49     s[tot]=x;
50     t[tot]=y;
51 
52     xx=x,yy=y;
53 
54     tot=0;
55     x=1,y=1;
56     while (x!=xx || y!=yy)
57     {
58         tot++;
59         s[tot]=x;
60         t[tot]=y;
61 
62         printf("? %d %d %d %d\n",x,y+1,n,n);
63         fflush(stdout);
64         scanf("%s",S);
65         if (strcmp(S,"YES")==0)
66             y++;
67         else
68             x++;
69     }
70 
71     printf("! ");
72     for (i=2;i<=2*n-1;i++)
73         if (s[i]==s[i-1])
74             printf("R");
75         else
76             printf("D");
77     return 0;
78 }

 

posted @ 2018-08-24 16:10  congmingyige  阅读(139)  评论(0编辑  收藏  举报