这是 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;
}