Wannafly挑战赛28A(模拟,题意文字游戏)

题目链接:https://ac.nowcoder.com/acm/contest/217/A

刚看这道题的时候还以为是博弈论==,然后稍微一想,发现就是个模拟。。。。水题模拟这个游戏过程即可。。

需要注意的是>=2*y0站在谁的角度,x的角度没错是那样;y的角度的话就是>=2*x0;因为题目说的是对手的y0,轮到你操作了你就是x,对手就是y不管初始怎么样

 1 #include <iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=1e6+5;
 5 ll a[maxn];
 6 ll x0,y0,l;
 7 ll x,y;
 8 
 9 int main()
10 {
11     ios::sync_with_stdio(false); cin.tie(0);
12 
13     cin>>x0>>y0>>l;
14 
15     x=x0; y=y0;
16     int f1=0,f2=0,p=1;
17     for(;;)
18     {
19         if(p%2)//msc先手
20         {
21             if(x>l)
22             {
23                 f1=1;
24                 break;
25             }
26             for(;;)
27             {
28                 y=y+x;
29                 if(y>=y0*2) break;
30             }
31 
32             p++;
33         }
34         else
35         {
36             if(y>l)
37             {
38                 f2=1;
39                 break;
40             }
41             for(;;)
42             {
43                 x=x+y;
44                 if(x>=x0*2) break;
45             }
46             p++;
47         }
48     }
49     if(f1) cout<<"Yes ";
50     else cout<<"No ";
51 
52     x=x0; y=y0;
53     f1=0,f2=0,p=1;
54     for(;;)
55     {
56         if(p%2==0)//msc后手
57         {
58             if(x>l)
59             {
60                 f1=1;
61                 break;
62             }
63             for(;;)
64             {
65                 y=y+x;
66                 if(y>=y0*2) break;
67             }
68 
69             p++;
70         }
71         else
72         {
73             if(y>l)
74             {
75                 f2=1;
76                 break;
77             }
78             for(;;)
79             {
80                 x=x+y;
81                 if(x>=x0*2) break;
82             }
83             p++;
84         }
85     }
86     if(f1) cout<<"Yes"<<endl;
87     else cout<<"No"<<endl;
88 
89 
90     return 0;
91 }

完。

猜你喜欢

转载自www.cnblogs.com/redblackk/p/9939158.html
今日推荐