博弈
傻笨
这个作者很懒,什么都没留下…
展开
-
博弈中的巴什博弈
巴什博弈 hdu 2149巴什博弈基本思想: 两人在限制(1~n)的条件下,谁先达到m谁胜出。 则分情况讨论: 1. n>=m时;先手胜出; 2. m==n+1时,先手败; 3. m%n+1!=0时,先手胜;转载 2013-05-03 14:20:13 · 1150 阅读 · 0 评论 -
Codeforces Round #169 (Div. 2) B题
#include #include #include using namespace std;const int maxn=1005;char s[maxn];int a[maxn];int main(){ int i; while(gets(s)!=NULL) { //getchar(); memset(a,0,sizeof原创 2013-07-18 21:45:48 · 462 阅读 · 0 评论 -
杭电2149
这是巴什博弈#includeint main(){ int n,m,i; while(scanf("%d%d",&n,&m)!=EOF) { if(nm) { for(i=n;im-1;i++) printf("%d ",i); printf("%d\原创 2013-05-05 15:23:34 · 547 阅读 · 0 评论 -
博弈总结
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。转载 2013-07-18 16:38:53 · 513 阅读 · 0 评论 -
杭电2176
#include#define maxn 200000int a[maxn];int main(){ int n,i,sum,sum2; while(scanf("%d",&n),n) { sum=0; for(i=0;in;i++) { scanf("%d",&a[i]);原创 2013-05-07 14:42:38 · 533 阅读 · 0 评论 -
杭电1564
这是一道博弈题目,要清楚理解题意,然后在画出图,模拟几遍就知道怎么做了,思路就是:两个人走过的路程数加起来会等于2n,故只要判断n是奇数还是偶数,就知道谁是最后到达的!#includeint main(){ int n; while(scanf("%d",&n)!=EOF&&n!=0) { if(n%2==0)原创 2013-05-05 18:23:21 · 585 阅读 · 0 评论 -
杭电1517
博弈问题题意:两人玩游戏,从1开始,轮流对数进行累乘,直到超过一个指定的数。算法分析:①、如果输入是2~9,因为Stan是先手,所以Stan必胜。②、如果输入是10~18(9*2),因为Ollie是后手,不管第一次Stan乘的是多少,Stan肯定在2~9之间,如果Stan乘以2,那么Ollie就乘以9,那么Ollie乘以大于1的数都能超过10~18中的任何一个数,Ollie原创 2013-05-05 15:50:23 · 600 阅读 · 0 评论 -
杭电2516
这是一道除了三大博弈之外的令一种菲波那契数博弈,即就是只要该数为斐波纳契数,那第一个拿的必为失败!后者一定为胜者!#include#includeusing namespace std;int main(){ int n,i,a[100]; a[0]=0;a[1]=1; for(i=2;i a[i]=a[i-1]+a[i-2];原创 2013-05-05 16:14:31 · 630 阅读 · 0 评论 -
杭电2188
这是一道简单的巴什博弈!很水的,入门!#includeint main(){ int t,n,m; while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d%d",&n,&m); if(n%(m+1)==0)原创 2013-05-05 15:20:41 · 645 阅读 · 0 评论 -
博弈基础知识
博弈论基础知识另附资料: http://www.math.ucla.edu/~tom/Game_Theory/Contents.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理.下面我们来分析一下要如何才能够取胜. 按照游戏规则(转载 2013-05-03 14:20:57 · 880 阅读 · 0 评论 -
杭电1846简单的巴什博弈
#includeint main(){ int t,n,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); if(n%(m+1)!=0) printf("first\n");原创 2013-05-03 14:18:37 · 587 阅读 · 0 评论 -
HDU 1851
这道题目有点怪异,就是告诉你每堆的石头个数,还有就是每堆的取石头范围,这和Nim博弈不同,一开始我想成Nim博弈了,后来才发现,Nim博弈是告诉我们几堆石头的个数,然后就是,每次取的范围,而不是每堆的取石头范围!想了好久,没有想出来,看了别人的题解,也看不懂为什么要这样,后来和同学一讨论,才理解了,就是先利用巴什博弈,求出每堆按照巴什博弈的方法取,剩下的数量,因为巴什博弈中 K*M根本就不影响结原创 2013-07-18 19:17:31 · 644 阅读 · 0 评论