博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vijos 1557:bzoj:1413: [ZJOI2009]取石子游戏
阅读量:4356 次
发布时间:2019-06-07

本文共 1757 字,大约阅读时间需要 5 分钟。

Description

在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出一个初始一个局面,是否存在先手必胜策略。

Input

文件的第一行为一个整数T,表示有 T组测试数据。对于每组测试数据,第一行为一个整数n,表示有n堆石子;第二行为n个整数ai,依次表示每堆石子的数目。

Output

对于每组测试数据仅输出一个整数0或1。其中1表示有先手必胜策略,0表示没有。

Sample Input

1
4
3 1 9 4

Sample Output

0
数据范围
对于30%的数据 n≤5 ai≤105
对于100%的数据 T≤10 n≤1000 每堆的石子数目≤109
 
 
静静膜大神题解……
对于一段区间[L, R], 若L+1到R的石子数固定, 那么使得在这段区间上先手必败的a[L]有且仅有一个.
设left[i][j]表示, 在[i, j]区间的左边加上left[i][j]这个数后先手必败, right[i][j]的定义类似. 那么最后我们只用看left[2][n]是否等于a[1]就可以了.

设L = left[i][j - 1], R = right[i][j - 1], X = a[j]. left[i][j]只和L, R, X三个数有关.

一大波情况分类:

当R = X时,left[i][j] = 0。

当X < L且X < R时, left[i][j] = X。

当R < X <= L时, left[i][j] = X - 1。

当L <= X < R时,left[i][j] = X + 1。

X > L且X > R时,left[i][j] = X。

对于right[i][j]可做同样处理……

要是不看大神题解绝逼想不到这么神的做法……

orz Run Towards End:http://www.cnblogs.com/zcwwzdjn/archive/2012/05/26/2519685.html

 

#include
#include
using namespace std;int o,p;inline int read(){ p=0;o=getchar(); while(o<'0'||o>'9') o=getchar(); while(o>='0'&&o<='9') p=p*10+o-48,o=getchar(); return p;}int t,n,a[1000],l[1001][1001],r[1001][1001];int main(){ register int i,j,k; t=read(); while(t--){ n=read(); for (i=0;i
l[i][j-1]&&a[j]>r[i][j-1])||(a[j]
a[j]) l[i][j]=a[j]+1;else l[i][j]=a[j]-1; if (a[i]==l[i+1][j]) r[i][j]=0;else if ((a[i]>l[i+1][j]&&a[i]>r[i+1][j])||(a[i]
a[i]) r[i][j]=a[i]+1;else r[i][j]=a[i]-1; } if (l[1][n-1]==a[0]) printf("0\n");else printf("1\n"); }}
View Code

 

 

 

 

 

转载于:https://www.cnblogs.com/Enceladus/p/5152417.html

你可能感兴趣的文章
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>
PL/SQL 异常处理程序
查看>>
javascript小白学习指南1---0
查看>>
div:给div加滚动栏 div的滚动栏设置
查看>>
java随机函数使用方法Random
查看>>
链表中环的入口结点
查看>>
凤姐讲学英语
查看>>
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
flask中的CBV,flash,Flask-Session,WTForms - MoudelForm,DBUtils 数据库连接池
查看>>
最近整理的提供免费代理列表的几个网站
查看>>
探偵ガリレオー転写る2
查看>>
快速排序算法C++实现[评注版]
查看>>
七尖记
查看>>
SAP(最短增广路算法) 最大流模板
查看>>