HDU Life 5754 Winner Bo 各类博弈
来源:互联网 发布:api原油库存今天数据 编辑:程序博客网 时间:2024/05/29 19:05
http://acm.hdu.edu.cn/showproblem.php?pid=5754
题意:一个国际象棋棋盘,有四种棋子,从(n,m)走到(1,1),走到(1,1)的人赢,先手赢输出B,后手赢输出G,平局输出D。
题解:
可以手画二维表来进行模拟,推出规律
也可以暴力打表。
四种棋子的规则如下:
1、王(King):横、竖、斜都可以走,每次限走一格
2、车(Rook):横、竖均可走,不能斜走,格数不受限制,除王车易位的情况下,平时不能越子
3、马(Knight):每步棋先横走或竖走一格,再斜走一格(或者横两格竖一格,竖两格横一格),可以越子
4、后(Queen):横、竖、斜都可以走,格数不受限制,但不能越子
第一种很明显(1,1)是必败点,可以走到必败点的都是必胜点,而只能走到必胜点的都是必败点,所以很容易得出结论:n,m都为偶数则先手必败。
第二种把这个问题看做是两堆石子,取石子问题,是尼姆博弈,异或为0即相等的时候先手必败。
第三种先n--,m--,把问题转化为(0,0)是终点,如果n+m不是3的倍数一定是平局;如果是3的倍数,如果nm相等,那么一定是必败的,先手减2减1,后手就减1减2,必败;如果nm不等且n=m+1或者m=n+1,那么先手必胜,因为可以一步走到必败点,必胜;其余情况都是平局,因为如果一方存在赢的情况,另一方可以不走那步,把小的数-2,大的数-1,往墙上靠,谁也赢不了肯定是平局。
注意:n和m相差1不能用异或=1判断,如果奇数-偶数=1异或确实为1,偶数-奇数=1就不是了,受到以前一道概率DP题的误导结果WA了好多次,那个题是if((j>>(i-1)^1)==(k>>(i-1))) 是足球淘汰赛,01,23,45一组,和这个题不一样,要注意。附上那道题:传送门。
第四种也是看做两堆石子,取石子问题
#include <bits/stdc++.h>using namespace std;const int mod=1e9+7;int main(){ int t,x,n,m; scanf("%d",&t); while(t--) { scanf("%d%d%d",&x,&n,&m); n--,m--; if(x==1)//guowang { if(n%2==1||m%2==1) { printf("B\n"); continue; } else printf("G\n"); } else if(x==2) { if(n==m) printf("G\n"); else printf("B\n"); } else if(x==4) { if(n<m) swap(n,m); int k=n-m; n=(int)(k*(1+sqrt(5))/2.0); if(n==m) printf("G\n"); else printf("B\n"); } else { if(n==0&&m==0){ printf("G\n"); continue; } if(n==m&&n%3==0){ printf("G\n"); continue; } if(n>m) swap(n,m); if(n==m-1&&n%3!=0&&m%3!=0){ printf("B\n"); continue; } printf("D\n"); } } return 0;}
- HDU Life 5754 Winner Bo 各类博弈
- HDU 5754 Life Winner Bo (博弈)
- hdu 5754 Life Winner Bo(博弈)
- HDU 5754 Life Winner Bo(博弈)
- HDU 5754 Life Winner Bo (博弈)
- HDU-5754-Life Winner Bo-博弈
- HDU 5754 Life Winner Bo(博弈)
- HDU 5754 Life Winner Bo 博弈
- HDU-5754-Life Winner Bo(博弈)
- HDU 5754 Life Winner Bo 博弈
- HDU-5754 Life Winner Bo(混合博弈)
- HDU 5754 Life Winner Bo (各种博弈融合)
- HDU 5754 Life Winner Bo(多校3 各种博弈)
- HDU 5754 Life Winner Bo
- HDU 5754 Life Winner Bo
- hdu 5754 Life Winner Bo
- 【HDU】5754 Life Winner Bo
- hdu5754 Life Winner Bo 博弈
- CAP理论
- 第一个数据结构ngx_str
- Asp.net使用Table标签填充数据库数据
- LeetCode--373. Find Pairs with Smallest Sums
- HDU 3065病毒侵袭持续中 ac自动机
- HDU Life 5754 Winner Bo 各类博弈
- 第五天作业
- POJ 3260 DP
- poj 3714 japan (分治)
- 51单片机之外设——点亮LED
- 基于有序的查找算法总结
- jquery 全国三级联动
- Scrum敏捷研发体系初探
- web框架学习前复习——Servlet