http://acm.hdu.edu.cn/showproblem.php?pid=4388

http://blog.csdn.net/y1196645376/article/details/52143551

好久没有写题了,再这么颓下去就要被彻底踩爆了(已经被彻底踩爆了)。

这道题是一道博弈论,从侧面向我们揭示了一个客观规律,取东西的博弈论(不是定理的话)大多数都是从二进制入手(虽然这道题题目很显然是和二进制有关)进行一系列的找规律。

这道题的正解也同样给了我们一种看题的思路,从最基本的条件看起,找题目的突破点或者规律。

题目大意:有n堆石子,某堆的石子数为x,每次操作将一堆石子分为k和k(xor)x两堆(k<x , k(xor)x<x)(两个人在一局游戏中分别有一次机会在分石子时将 k(xor)x的一堆变为2k(xor)x)。

直接看规则是很复杂的,但经过观察可以发现每次分石子后所有石子堆的二进制形式中的1的数目的奇偶性不变,而游戏结束状态即为每一堆二进制形式中1的个数都为1。

那么显然(并不那么显然)可以推得(推导过程就是找后继情况的先手后手必胜倒着推),设n+所有堆的石子数的二进制形式中1的个数的和为cnt,那么cnt是奇数时先手胜,是偶数时后手胜。

代码如下

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<map>
using namespace std;
int m;
int main(){
int T;
scanf("%d",&T);
for(int j=;j<=T;j++){
scanf("%d",&m);
int n=,x;
for(int i=;i<=m;i++){
scanf("%d",&x);
while(x){
n+=(x&);
x/=;
}
}n+=m;
printf("Case %d: ",j);
if(n&){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return ;
}

HDU 4388 Stone Game II 博弈论 找规律的更多相关文章

  1. HDU 4388 Stone Game II {博弈||找规律}

    Stone Game II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. hdu 4388 Stone Game II

    Stone Game II HDU - 4388 题目大意: 给出n堆物品,每堆物品都有若干件,现在A和B进行游戏,每人每轮操作一次,按照如下规则: 1. 任意选择一个堆,假设该堆有x个物品,从中选择 ...

  3. hdu 4388 Stone Game II sg函数 博弈

    Stone Game II comes. It needs two players to play this game. There are some piles of stones on the d ...

  4. hdu 2865 Polya计数+(矩阵 or 找规律 求C)

    Birthday Toy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  5. POJ2505 A multiplication game 博弈论 找规律

    http://poj.org/problem?id=2505 感觉博弈论只有找规律的印象已经在我心中埋下了种子... 题目大意:两个人轮流玩游戏,Stan先手,数字 p从1开始,Stan乘以一个2-9 ...

  6. HDU 4349 Xiao Ming's Hope 找规律

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349 Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/ ...

  7. 题解报告:hdu 1564 Play a game(找规律博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564 Problem Description New Year is Coming! ailyanlu ...

  8. HDU 4731 Minimum palindrome 打表找规律

    http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...

  9. HDU 4588 Count The Carries(找规律,模拟)

    题目 大意: 求二进制的a加到b的进位数. 思路: 列出前几个2进制,找规律模拟. #include <stdio.h> #include <iostream> #includ ...

随机推荐

  1. js基础知识点收集

    js基础知识点收集 js常用基本类型 function show(x) { console.log(typeof(x)); // undefined console.log(typeof(10)); ...

  2. [NOI2008] [bzoj1061] 志愿者招募

    还是一道费用流的题目.话不多说,进入正题. 题意:给定n个点和m种从l到r覆盖一层的费用,求满足所有点的覆盖层数都大等于权值的最小费用 分析:要做到区间修改,看似比较麻烦. 用差分把区间修改变成单点修 ...

  3. 时间盲注脚本.py

    时间盲注脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import time payloads = 'abcdefg ...

  4. promise 如何知道所有的回调都执行完了?

    var fs = require('fs'); /** * @return {object} Promise */ function doThing(fileName) { // ... // con ...

  5. OpenRCT2-ext

    https://github.com/RollingStar/RCT-Music-Patch https://github.com/seanfisk/rct2-game-objects https:/ ...

  6. jQuery -《锋利的jQuery》————读后小结

    jQuery是一个优秀的javascript库. 我用的是vs2012自带的  jquery-1.8.2.js这个库,在Scripts这个文件夹下面 首先,我们使用jQuery要在head标签内引入j ...

  7. linux和性能相关的命令及系统性能诊断

    常用的和性能有关的命令 Iostat/vmstat/top/mpstat/time/strace/ipcs/ipcrm/ifconfig/tethereal/netstat/free/uptime 关 ...

  8. Linux命令--more

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  9. yii2 一对多关系的对分页造成的影响

    下面代码中关联descies时,匹配较多,造成分页数不对,需要加条件限制: $model = User::find() ->joinWith('app') ->joinWith(['des ...

  10. CF868F Yet Another Minimization Problem

    题目描述: 给定一个序列,要把它分成k个子序列.每个子序列的费用是其中相同元素的对数.求所有子序列的费用之和的最小值. 输入格式:第一行输入n(序列长度)和k(需分子序列段数).下一行有n个数,序列的 ...