A. Game

本文回顾了在Codeforces平台上的首次挑战,通过解决Rockethon2015中的一道经典算法题来纪念这一经历。详细解释了题目的核心逻辑和最优策略,通过简单的数学分析,揭示了如何在有限的游戏回合中赢得比赛,最终提供了实现此策略的C++代码。适合初学者理解和实践,旨在激发更多对算法竞赛的兴趣。
摘要由CSDN通过智能技术生成

这是 Rockethon 2015 的一道题,也是我做codeforces的第一道题,在这里留个纪念。原题在

题意为:小明有n1个球,小红有n2个球,每轮游戏,小明可以扔掉a个球(1 <= a <= k1), 小红可以扔掉 (1 <= b <= k2)个球,小明先开始游戏,在小明和小红不是sb的情况下,要是轮到谁了,谁的球扔完了,那么这个人就输了。

输入 n1, n2, k1, k2 ,

输出 First (如果第一个人赢)或者 Second (要是第二个人赢)

我就想,要是小明和小红,每次都只仍1个,这样就能保证他们玩得越久,就等对方扔出更多的球,然后sb地输掉。每个人在每一轮都只仍1个的情况是最优的,这种情况下,只要n1 > n2时,小明就赢了,否则,小红赢。有没有看到原题中的 optimally,就是这么简单。

#include <iostream>
using namespace std;

int main(){
    int n1, n2, k1, k2;
    cin >> n1 >> n2 >> k1 >> k2;
    if(n1 > n2) cout << "First";
    else cout << "Second";
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值