-
A - Bash游戏
51Nod - 1066 - (1)Bash Game:一堆n个物品,两人轮流取,每次取1至m个,最后取完者胜
- 比如10个物品,每次只能取1到5个,则先手方必赢
- 1.面对[1...m]个局面,必胜
- 2.面对m+1个局面,必输
- 3.如果可以使对手面临必输局面,那么是必赢局面
- 4.如果不能使对手面临必输局面,那么是必输局面
- 基础:1 , 2, ..., m是必赢局面, m+1是必输局面
- 递推:m+2,m+3, ... ,2m+1是必赢局面,2m+2是必输局面
- ...
- k(m+1)是必输局面,应该允许k=0,因为0显然也是必输局面
- 在必输局和必赢局中,赢的一方的策略是: 拿掉部分物品,使对方面临k(m+1)的局面
- 例如上例中10个物品,只能拿1到5个,先手方拿4个即可,对手无论拿多少个,你下次总能拿完
- 从另一个角度思考这个问题,如果物品数量随机,那么先手一方胜利的概率是m/(m+1),后手方胜利的概率是1/(m+1)
#include<bits/stdc++.h> using namespace std; int t,n,k,a,b; int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); if(n%(k+1)==0) printf("B\n"); else printf("A\n"); } return 0; }
A - Bash游戏 51Nod - 1066
最新推荐文章于 2020-08-06 16:07:53 发布