zoukankan      html  css  js  c++  java
  • hdu 1851 A Simple Game 博弈论

    简单博弈问题(巴什博弈-Bash Game)

    巴什博弈:只有一堆n个物品,两个人轮流从这对物品中取物,规定每次至少取一个,最多取m个,最后取光着得胜。

    很容易想到当n%(m+1)!=0时,先取者必胜,第一次先拿走n%(m+1)个,以后每个回合都保持两人拿走的物品总和为m+1即可。

    这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报10个,谁能报到100者胜。

    此题可以把每堆石头的取法看作是一个BashGame,这样只需将每组石头按照BashGame的取法判断,然后将n堆石头做异或,

    如果异或的结果不为0,则老师获胜,否则Agrael取胜。

    代码如下:

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<iomanip>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<vector>
     8 #define ll __int64
     9 #define pi acos(-1.0)
    10 #define MAX 50000
    11 using namespace std;
    12 int main(){
    13     int t,m,s,c,ans;
    14     cin>>t;
    15     while(t--){
    16         cin>>m;
    17         ans=0;
    18         for(int i=0;i<m;i++){
    19             scanf("%d%d",&s,&c);
    20             ans^=s%(c+1);
    21         }
    22         puts(ans!=0?"No":"Yes");
    23     }
    24     return 0;
    25 }
    View Code

  • 相关阅读:
    C#练习3
    C#练习2
    C#环境变量配置及csc命令详解(转自cy88310)
    建站流程(转)
    C#练习
    程序竞赛1
    排序算法
    输出有向图的邻接矩阵
    C#高效分页代码(不用存储过程)
    存储过程详解
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3251449.html
Copyright © 2011-2022 走看看