摘要:
题意:略解题思路: 直接Bash博弈,水水更健康。。。代码:#includeusingnamespacestd;intmain(void){intcas,total,price;scanf("%d",&cas);while(cas--){scanf("%d%d",&total,&price);if... 阅读全文
摘要:
题意:棋的初始点是(1,m),即右上角。 下棋者只能往左边(left),左下面(left-underneath),下面(underneath),这三个方格下棋。解题思路:只要画出NP图就可以发现规律了。。。N:必胜点(如果左边,左下角,下角有一个P点,那么这个点就是N点)P:必败点(如果左边,左下角,下角全都是N点,那么这个点就是P点)最后棋子一定到达(n,m)这个点,所... 阅读全文
摘要:
题意:(略)解题思路: 又是一道Bash博弈,直接水过吧。。不过这道题要求说当先手有可以开多个价(必胜点)时,要将这些数全都输出。其实出现这种情况只有一种可能,那就是当商品的总价值少于每次你可以开的价值时才有多个必胜点,那么加一条判断语句不就秒杀掉了额么?代码:#includeusingnamespacestd;intmain(void){intto... 阅读全文
摘要:
题意:游戏的规则是这样的:1、棋盘包含1*n个方格,方格从左到右分别编号为0,1,2,…,n-1;2、m个棋子放在棋盘的方格上,方格可以为空,也可以放多于一个的棋子;3、双方轮流走棋;4、每一步可以选择任意一个棋子向左移动到任意的位置(可以多个棋子位于同一个方格),当然,任何棋子不能超出棋盘边界;5、如果所有的棋子都位于最左边(即编号为0的位置),则游戏结束,并且规定最后走棋的... 阅读全文
摘要:
巴什博弈,没啥好说的了。。。代码:#includeusingnamespacestd;intmain(void){intnum,number,everyT;scanf("%d",&num);while(num--){scanf("%d%d",&number,&everyT);if(number%(every... 阅读全文
摘要:
HDU1805题意:给你三堆牌,每次从其中一堆中拿出任意张牌,最先拿完的人胜利。解题思路: 经典的尼姆博弈。只要其中的n-1堆牌的异或和小于剩余的那一堆,那么这个点就是N点。 为了方便求解,程序会先将n堆得异或和求出,然后再跟n堆中的任意一堆异或,结果就是n-1堆的异或值。因为0与任何值异或,都是它本身。ps:尼姆博奕(Nimm Game)基础... 阅读全文
摘要:
直接飘过吧,没啥说的。#include#includeusingnamespacestd;boolcmp(inta,intb){if(a>b)returntrue;elsereturnfalse;}intmain(void){intn,m,i;inta[100000];whi... 阅读全文
摘要:
#include#includeusing namespace std;int main(void){int n,m,sum;cin>>m;while(m--){cin>>n;sum=pow(2,n-1)+(n-1)*pow(2,n-2);cout<<sum<<endl;}return 0;} 阅读全文
摘要:
代码:#include#includeusingnamespacestd;intmain(void){charsnumber[1001],snumber1[1001],snumber2[1001],answer[1001][1001];intlen1,flag,a,k,i,j;while(cin>>snumber){str... 阅读全文