摘要: n堆石子,两个人轮流取,每次可以在一堆石子中取至少一个石子,并可以选择将剩下的石子分成任意的两堆,最后取走的获胜,问谁会获胜。比裸nim多了一个条件就是可以将剩下的石子分开,原来是1的位拆分后变成一个1和一个0,原来是0的拆分后变成1和1或者0和0,都不改变nim的必胜或必败状态,所以直接异或。#i... 阅读全文
posted @ 2014-09-23 16:38 贝尔摩德 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目大意:n个数排成一列,在这n个数中取k段连续的长度为m的序列并最大化。dp[i][j]表示前 i 个数中取 j 段的最大值。#include #include #include using namespace std;typedef long long ll;ll dp[5100][5100],... 阅读全文
posted @ 2014-09-23 16:24 贝尔摩德 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 排成一条直线的格子上有n个棋子,两个人每个人每次可以选择一枚棋子向左移动任意步数,但是不可以越过棋子,无法进行操作的一方失败,问谁会失败。先考虑偶数个棋子时的情况,将棋子从左到右两两配对,转化成n/2堆石子,每堆石子的个数为中间的空格数,这样每次向左移动可以看做在一堆石子中取了任意个,转换成了nim... 阅读全文
posted @ 2014-09-23 16:19 贝尔摩德 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目大意:n个硬币排成一个圈,两个人依次取硬币,每次可以取一个或两个,取两个时必须是连续的两个,硬币取走后会留下空位,即不连续了。取走最后一枚硬币的获胜。第一个人取走硬币之后,第二个人可以通过取一个或两个构成对称的两组,只要第一个人能取,那么第二个人也能取。#include #include #in... 阅读全文
posted @ 2014-09-23 16:13 贝尔摩德 阅读(118) 评论(0) 推荐(0) 编辑