上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 34 下一页
摘要: 预处理一下每个元素左边和右边最近的相邻元素。对于一个区间[l, r]和区间内某一个元素,这个元素在这个区间唯一当且仅当左右两边最近的相邻元素不在这个区间内。这样就可以O(1)完成查询。首先查找整个字符串是否有唯一元素,如果没有则整个序列是无聊的。有的话,假设这个唯一元素下标是p,那么如果子序列[0,... 阅读全文
posted @ 2015-04-16 13:28 AOQNRMGYXLMV 阅读(342) 评论(2) 推荐(0) 编辑
摘要: 首先预处理一下以每个数为结尾的前s个数是否能构成一个1~s的排列。可以用cnt数组来记录每个数出现的次数和用一个变量记录一共有多少个不同的数出现。然后枚举每种可能的情况,也就是枚举第一首歌会出现的位置,注意要考虑到不完整的序列。代码不长,但是那个ok数组写起来有点蛋疼,因为要考虑到不完整序列的存在,... 阅读全文
posted @ 2015-04-16 13:15 AOQNRMGYXLMV 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 这道题真的有点“神”啊。= ̄ω ̄=因为输入都是x,所以整个电路的功能一共就四种:0, 1, x,!x所以就确定了这样一个事实:如果电路的输出是常数,那么所有的输入都可以优化成常数。否则,只需要将一个输入变为变量即可,其他的全部为常数。从00...0到11...1,在1的数量增多的过程中一定有一个位置... 阅读全文
posted @ 2015-04-15 15:22 AOQNRMGYXLMV 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 拖了好久的题解,想想还是补一下吧。A. King of Thieves直接枚举起点和5个点之间的间距,进行判断即可。 1 #include 2 using namespace std; 3 4 char s[110]; 5 6 int main() 7 { 8 //freopen("i... 阅读全文
posted @ 2015-04-15 13:42 AOQNRMGYXLMV 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 感觉这道题用PN大法好像不顶用了,可耻地看了题解。考虑一下简单的必胜状态,某一个数是另一个数的倍数的时候是必胜状态。从这个角度考虑一下:游戏进行了奇数步还是偶数步决定了哪一方赢。如果b > 2a,那么这一方就有权利改变游戏步数的奇偶性,从而到达对自己有利的状态,所以这是一个必胜状态。如果a 2 #... 阅读全文
posted @ 2015-04-13 20:55 AOQNRMGYXLMV 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u=题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态。从http://www.cnblogs.com/chaosheng/archive/2012/05/29/2524725.h... 阅读全文
posted @ 2015-04-13 19:50 AOQNRMGYXLMV 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 从第一个加油站开始枚举起点,如果到第i个加油站油量不够的话,那么1~i个加油站都不可能是起点。将第i+1个加油站作为起点继续枚举。比如说,第一个加油站开始最多跑到第5个加油站,那么第二个加油站不可能是起点。因为第一个作为起点的话,到达第二个加油站油箱可能还有剩余,这样都跑不完一圈,所以从第二个站开始... 阅读全文
posted @ 2015-04-13 19:18 AOQNRMGYXLMV 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 直接用一个优先队列去模拟Huffman树的建立过程。每次取优先队列前两个数,然后累加其和,把这个和在放入到优先队列中去。 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 whi... 阅读全文
posted @ 2015-04-13 18:37 AOQNRMGYXLMV 阅读(163) 评论(0) 推荐(0) 编辑
摘要: A. Exam果然,并没有3分钟秒掉水题的能力,=_=||n = 5的时候将奇数和偶数分开输出即可保证相邻的两数不处在相邻的位置。 1 #include 2 using namespace std; 3 4 int main() 5 { 6 int n; 7 cin >> n; ... 阅读全文
posted @ 2015-04-13 15:02 AOQNRMGYXLMV 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 直接说几个比较明显的规律吧。k个小时以后,红气球的个数为3k。单独观察一行:令f(r, k)为k个小时后第r行红气球的个数。如果r为奇数,f(r, k) = f((r+1)/2, k-1) * 2如果r为偶数,f(r, k) = f(r/2, k-1)令g(r, k)为k个小时后前r行红气球的个数。... 阅读全文
posted @ 2015-04-13 13:41 AOQNRMGYXLMV 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 首先通过二分来确定这种最大值最小的问题。假设每个区间的和的最大值为x,那么只要判断的时候只要贪心即可。也就是如果和不超过x就一直往区间里放数,否则就开辟一个新的区间,这样来判断是否k个区间容得下这些数。还有就是输出也挺麻烦的,借鉴了一下lrj的代码,感觉也是十分巧妙。 1 #include 2 u... 阅读全文
posted @ 2015-04-13 03:29 AOQNRMGYXLMV 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 假设数字1~i-1已经全部归位,则第i到第n个数为无序区间。如果i在无序区间的前半段,那么直接将i换到第i个位置上。否则先将i换到无序区间的前半段,再将i归位。这样每个数最多操作两次即可归位。 1 #include 2 using namespace std; 3 4 const int max... 阅读全文
posted @ 2015-04-12 19:55 AOQNRMGYXLMV 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 为了提高题解质量还是简单证明一下:3的倍数是必败状态。如果n % 3 = 1,那么拿走1个石子;如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态。所以每个必胜状态都有一个后继是必败状态。如果n % 3 = 0,因为2i里面没有一个是3的倍数,所以不管怎么拿,剩下的石子数n' % 3... 阅读全文
posted @ 2015-04-11 21:04 AOQNRMGYXLMV 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 如果硬要说这算是博弈题目的话,那这个博弈是不公平博弈(partizan games),因为双方面对同一个局面做出来的决策是不一样的。我们平时做的博弈都是公平博弈(impartial games),所以在这道题里面,那些必胜必败状态,SG函数SG定理都派不上用场了。但是,这道题是可以贪心的。比如第一个... 阅读全文
posted @ 2015-04-11 20:50 AOQNRMGYXLMV 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 考虑到Bouton定理的证明过程,设n个数的Nim和(异或和)为X,其最高位的1在第k位,那么n个数中一定有个y的第k为也是个1.将y的数量变为X xor y,那么n的数的Nim和为0,便转为先手必败局面。所以先手有多少种取法,就看n个数里面有多少个y,满足二进制的第k为是个1。 1 #includ... 阅读全文
posted @ 2015-04-11 19:07 AOQNRMGYXLMV 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 没什么好说的,一道水题。 1 #include 2 3 int main() 4 { 5 int n, m; 6 while(scanf("%d%d", &n, &m) == 2) 7 { 8 if(n <= m) 9 {10 ... 阅读全文
posted @ 2015-04-11 18:53 AOQNRMGYXLMV 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 这道题的结论就是,石子的个数为斐波那契数列某一项的时候,先手必败;否则,先手必胜。结论很简单,但是证明却不是特别容易。找了好几篇博客,发现不一样的也就两篇,但是这两篇给的证明感觉证得不清不楚的,没看太懂。首先,证明要依赖一个邓肯多夫定理(Zeckendorf's Theorem):任何一个正整数一定... 阅读全文
posted @ 2015-04-11 18:41 AOQNRMGYXLMV 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 根据博弈论的两条规则:一个状态是必胜状态当且仅当有一个后继是必败状态一个状态是必败状态当且仅当所有后继都是必胜状态然后很容易发现从1开始,前p个状态是必败状态,后面q个状态是必胜状态,然后循环往复。 1 #include 2 3 int main() 4 { 5 int n, p, q;... 阅读全文
posted @ 2015-04-11 16:05 AOQNRMGYXLMV 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 这是由n个巴什博奕的游戏合成的组合游戏。对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1)。然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异或和。 1 #include 2 3 int main() 4 { 5 int T, n; ... 阅读全文
posted @ 2015-04-11 15:49 AOQNRMGYXLMV 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 如果n在[2, 9]区间,那么Stan胜。如果n在[10, 18]区间,那么Ollie胜,因为不管第一次Stan乘上多少,第二次Ollie乘上一个9,必然会得到一个不小于18的数。如果n在[19, 162]这个区间呢?比如说n=19,那么Stan乘上个2,不管Ollie怎么乘,Ollie得到的数必然... 阅读全文
posted @ 2015-04-10 16:35 AOQNRMGYXLMV 阅读(174) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 34 下一页