题目链接:BZOJ - 1188题目分析我们把每一颗石子看做一个单个的游戏,它的 SG 值取决于它的位置。对于一颗在 i 位置的石子,根据游戏规则,它的后继状态就是枚举符合条件的 j, k。然后后继状态就是 j 与 k 这两个游戏的和。游戏的和的 SG 值就是几个单一游戏的 SG 值的异或和。那么还...
                            
                            
                                分类:
其他好文   时间:
2015-01-29 11:51:05   
                                阅读次数:
180
                             
                    
                        
                            
                            
                                题目大意:可以从某一堆中取任意个数,也可把一堆分成两个不为0的堆,直到某一方无法操作为输因为是nim博弈,所以只要考虑一堆时候的sg值,把所有堆的sg值异或即可很显然这里 0 是一个终止态 sg[0]=0;sg[1]=1 ;2 的时候可分为 0 , 1 , (1,1) 3种情况,sg值分别为 0,1...
                            
                            
                                分类:
其他好文   时间:
2015-01-28 17:30:56   
                                阅读次数:
156
                             
                    
                        
                            
                            
                                题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3759题解:只想到了两种情况必胜,没有推广T_T先说一下我想到了两种情况:1)异或和为0 我们一次打开所有的就成了普通的nim游戏。2)存在n-1的元素的自己异或和为0,那我们把这n-1个箱子打开...
                            
                            
                                分类:
其他好文   时间:
2015-01-26 11:50:50   
                                阅读次数:
246
                             
                    
                        
                            
                            
                                题意:反正就是要给的一串01的变成全0 能影响自己和左右 最少需要几步01方程组 异或解 1 int a[300][300]; // 增广矩阵 2 int x[300]; // 解 3 int free_x[300]; // 标记是否为自由未知量 4 5 int n; 6 void...
                            
                            
                                分类:
其他好文   时间:
2015-01-25 15:01:32   
                                阅读次数:
210
                             
                    
                        
                            
                            
                                题意:给4×4的棋盘的初始状态,b代表黑,w代表白。要求变成全黑或者全白 最少需要几步。简单的做法 可以暴搜 状压bfs 不再赘述主要学习Gauss做法同样是01方程组 用异或解注意全黑或全白都可以即 bbbb wwww bbbb wwww bbbb wwww bbbb ...
                            
                            
                                分类:
其他好文   时间:
2015-01-25 13:42:10   
                                阅读次数:
536
                             
                    
                        
                            
                            
                                这题……咋说捏,其实是一道披着博弈论外衣的树上操作问题……随便用dfs序或者树链剖分转成序列,然后查询路径上的所有点的NIM和(异或和)就行了,毕竟除了是在树上以外,就是裸的NIM问题。树链剖分:一开始把线段树写跪了,然后输出“Yes”和“No”的时候全部大写了,再然后发现线段树空间开小了……代码如...
                            
                            
                                分类:
其他好文   时间:
2015-01-24 15:42:40   
                                阅读次数:
215
                             
                    
                        
                            
                            
                                虽说是暴力题,但还是有很多很多的技巧与细节。 这题: 1、熟悉了位运算符,感觉异或操作的逼格有高了一级 2、可以用一个数的2进制来表示集合(这个需要多用) 3、中途相遇法。。。其实就是把总的集合拆成两半,降低指数使得暴力可解。(前段时间的中南校赛,好像也有个这种方法的题) #inclu...
                            
                            
                                分类:
其他好文   时间:
2015-01-24 15:42:27   
                                阅读次数:
140
                             
                    
                        
                            
                            
                                题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。解法:位异或运算思路:将问题简化为除了一个数字外,其他数字都出现两次。将数组的结果异或起来,因为出现两次的数组异或结果为0,所以结果异或的结果即为出现一次...
                            
                            
                                分类:
编程语言   时间:
2015-01-23 16:19:05   
                                阅读次数:
129
                             
                    
                        
                            
                            
                                题意,一颗树,每个边有个值,在树上找一条简单路径,使得这条路径上的边权异或值最大
把这题模型转换一下, 对于任意一条路径的异或,表示为f(u, v)
则f(u, v) = f(1, u) ^ f(1, v)
这是显然的
其中f(1, i)是可以再O(n)内处理出来
然后就是在一个数组内,找两个数异或值最大
然后就可以用字典树来搞
每个数变成01串,  然后插入字典树,...
                            
                            
                                分类:
其他好文   时间:
2015-01-22 23:24:23   
                                阅读次数:
192
                             
                    
                        
                            
                            
                                位移动运算符:>表示右移. 右移一位表示除2.位运算:位运算符包括: 与(&)、非(~)、或(|)、异或(^) &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000 | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110 ~...
                            
                            
                                分类:
编程语言   时间:
2015-01-20 20:10:10   
                                阅读次数:
218