博弈---ZOJ 2083 Win the Game(染绳子)
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2083
大意:两个人分别对n条绳子染 每次染m长 最后染不下的输,问先手胜负
思路:每一条绳子看做一个子问题(求每个绳子的SG再异或就是整个事件的SG),每条绳子 染的m的段 左右两端各一段,
分别求这左右两端的SG再异或 通过SG打表或递归求出整个绳子的各地方的SG
#include<stdio.h>
#include<string.h>
int fib;
int SG[60]; void getsg(){
bool vis[56];
memset(SG,0,sizeof(SG));
for(int i=2;i<=50;i++){ //i 为当前总长度
memset(vis,0,sizeof(vis));
for(int j=0;j+2<=i;j++) //j 为左端长度
vis[SG[j]^SG[i-j-2]]=1;
for(int k=0;k<=55;k++)
if(vis[k]==0)
{ SG[i]=k;break;
}
} } int main(){
fib=2;
getsg();
int n,t;int sum=0;
while(~scanf("%d",&n)){
sum=0;
while(n--){
scanf("%d",&t);
sum^=SG[t];
}
if(sum==0)printf("No\n");
else printf("Yes\n");
} return 0;
}
另外还有一种题型;
//将上题的线段改为环 做法一样先手先取一段m 问先手胜负
//思路还是一样 先手先取一段,破环为线段,现在就是换对手考虑线段
//做法还是一样 这边改为SG(n-m) 然后判断胜负条件改为和原题相反(应该懂吧?)
版权声明:本文为博主原创文章,未经博主允许不得转载。
博弈---ZOJ 2083 Win the Game(染绳子)的更多相关文章
- ZOJ 2083 Win the Game(SG函数)题解
		
题意:给一端n块的板,两人玩,每次能涂相邻两块没涂过的板,不能涂的人为输,先手赢输出yes 思路:sg函数打表,练习题 代码: #include<queue> #include<cs ...
 - 博弈---ZOJ 3057	 Beans Game(DP博弈)
		
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3057 有豆类三个桩.TT和DD挑选任意数量的豆子从任何两堆轮流任何桩或相同 ...
 - 博弈--ZOJ 3084 S-Nim(SG)
		
题意: 首先输入K 表示一个集合的大小 之后输入集合 表示对于这对石子只能去这个集合中的元素的个数 之后输入 一个m 表示接下来对于这个集合要进行m次询问 之后m行 每行输入一个n 表示有n个堆 ...
 - 【Mark】博弈类题目小结(HDU,POJ,ZOJ)
		
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小 ...
 - Beans Game(博弈 | | DP)zoj 3057
		
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pi ...
 - ZOJ - 3057 D - Beans Game(三堆威佐夫博弈)
		
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pi ...
 - NOJ——1672剪绳子(博弈)
		
[1672] 剪绳子 时间限制: 500 ms 内存限制: 65535 K 问题描述 已知长度为n的线圈,两人依次截取1~m的长度,n, m为整数,不能取者为输. 输入 输入n, m:( 0 < ...
 - zoj 3882 博弈 *
		
看了半天约数居然包括1,水了 #include<cstdio> #include<iostream> #include<algorithm> #include< ...
 - ZOJ 1893 A Multiplication Game 【简单博弈】
		
感觉ZJU上有不少博弈的题目. 这道题目还是比较好理解的,题目大概意思是:两人轮流乘一个2-9的数,从1开始乘,求谁的乘积先大于N. 还是寻找必败点必胜点,不过在这个题目里转换成了寻找必败区间必胜区间 ...
 
随机推荐
- java 字节流文件复制方法总结
			
1.使用字节流每次读写单个字节 public static void main(String[] args) throws IOException { FileInputStream fis = ne ...
 - vue-nuxt.js部署到宝塔主机服务器
			
废话不多说,直接上步骤,如下: 本文章为在 vue环境下使用了nuxt.js 1.搭建环境--由于本人安装的是宝塔主机,因此如下: 由于我直接使用的是宝塔主机,直接去“软件管理”安装 PM2管理器. ...
 - php实现姓名按首字母排序的类与方法
			
php将名字按首字母进行排序 <?php public function getFirstChar($s){ $s0 = mb_substr($s,0,3); //获取名字的姓 $s = ico ...
 - micro:bit 软件生态系统介绍
			
microbit 软件分成在microbit (Target Computer 如下图右边)上执行的及主计算机(Host Computer 如下图左边)上两类 : 一般程序写好后透过USB 转到mic ...
 - python学习笔记:第10天 函数进阶和作用域
			
目录 1. 函数进阶 2. 命名空间 3. 关键字global和nonlocal 1. 函数进阶 动态接收位置参数 之前写的函数都是固定参数的,假设有个函数需要的参数由几十个,一个个写在形参的位置会非 ...
 - mysql 日志log
			
my.ini log-error=D:/phpStudy/PHPTutorial/MySQL/log/error.loglog=D:/phpStudy/PHPTutorial/MySQL/log/my ...
 - scala (6)  Map
			
在scala中Map分为可变长(mutable)和不可变长(imtable) /** * 不可变长map 长度一旦初始化,就不能在进行更改 */ // 通过对偶元组的方式创建map val map = ...
 - 准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure )----转
			
原文:http://blog.csdn.net/t710smgtwoshima/article/details/8215037 Recall(召回率);Precision(准确率);F1-Meat ...
 - 使用mac学习java的一些基本操作
			
使用mac学习java的一些基本操作 本文主要讲一下MacOS与windows的不同 iTerm2 使用mac的同学是不需要安装虚拟机来学习linux命令的.只需要使用iTerm2[下载地址]+zsh ...
 - 20155337 2016-2017-2《Java程序设计》课程总结
			
20155337 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 <我的第一篇随笔> <做中学> <Java程序设计>第 ...