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

本文解析了一道模拟博弈类型的编程题,通过模拟游戏过程判断玩家是否能在特定条件下赢得比赛。代码中详细展示了如何根据游戏规则进行操作,以及如何处理边界条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接: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 }

 

完。

 

转载于:https://www.cnblogs.com/redblackk/p/9939158.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值