参考大神博客:http://blog.csdn.net/aptx704610875/article/details/8028023说明:主要的思想是通过异或的方式来实现的,基本的思想是通过时间来换空间的。比如是两个数之间的交换,就是a,b只要将a=a+b;b=a-b;a=a-b;然后就是异或,我们也...
分类:
其他好文 时间:
2014-12-02 20:47:46
阅读次数:
171
题意 求一组数中只出现过奇数次的数 输入保证只有一个数满足
知道一个数与自己的异或等于0 与0的异或等于自己就行咯
#include
using namespace std;
int main()
{
int n, t, ans;
while(scanf("%d", &n), n)
{
ans = 0;
for(int i = 1; ...
分类:
其他好文 时间:
2014-12-01 20:58:43
阅读次数:
168
大家很熟悉知道,交换变量经常的使用的一种方法是使用第三个变量,也符合正常人的思维逻辑,但是还有其他的一些方法来实现,但是有点“偏门”,记住就好了。下面就列举这几种方法。第一种方法,会用到参数的方法再来修稿。 1 using System; 2 namespace Exercise 3 { 4 ...
域的性质:
群和域在数学上的概念就不解释,可以参考维基百科。当然也可以参考《密码编码学与网络安全》这书的有限域一章。形象地说,域有这样一个性质:在加法和乘法上具有封闭性。也就是说对域中的元素进行加法或乘法运算后的结果仍然是域中的元素。有一点要注意,域里面的乘法和加法不一定是我们平常使用的乘法和加法。可以把C语言中的与运算和异或运算分别定义成加法和乘法。但习惯上,仍然使用符号+...
分类:
其他好文 时间:
2014-12-01 12:53:14
阅读次数:
255
其实 北京站的 dp都没想象中的难..but .. ..dp[x,y]表示前x个数xor值==y的方案数有多少种转移的时候 首先可以将上层的完全赋值到这层 就是假设 a[i] 不参与xor异或然后 a[i]与上层值进行异或 需要2次遍历所有的方案数我一度担心要tle 但是 n很小 才40.我一开始没...
分类:
其他好文 时间:
2014-11-30 18:28:14
阅读次数:
180
题目链接:http://poj.org/problem?id=3764分析:好题!武森09年的论文中有道题CowXor,求的是线性结构上的,连续序列的异或最大值,用的办法是先预处理出前n项的异或值,然后在这些值中找出两个值的异或值最大。是基于这样的一个原理,相同段的异或值为0。这题在树中找两个节点,...
分类:
其他好文 时间:
2014-11-30 16:47:12
阅读次数:
215
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字,要求:时间复杂度为O(n),空间复杂度O(1) 测试样例:输入: 8 {2,4,3,6,3,2,5,5}输出: 4,6 解法: 使用异或解决问题:一个数异或自己等于0,异或其他数 != 0,如果是一个数字,那么一趟遍历数组异或之后的结果就是我们要的;而现在是2个数据,那...
分类:
编程语言 时间:
2014-11-30 12:34:46
阅读次数:
165
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5119分析:dp[i][j]表示由前i个数组成异或和为j的方法数,则dp[i][j]=d[i-1][j^a[i]]+dp[i][j]; 边界:dp[0][0]=1,其他为0;复杂度40*1e6#inclu...
分类:
其他好文 时间:
2014-11-29 18:58:07
阅读次数:
150
经常遇到需要要对一个数求反,或求补的操作,以前采用的方法很笨,转换为二进制一个一个位的判断的方法. 最近无意中找到一个更简便的方法.其实只要用到"异或"运算就行了 "异或"运算为位相同则为0,位不同则为1. 比如我们将要2个字节的数进行求反的操作时,直接"异或"0xFF就行了,如果是4个字节则"异或...
题目大意:给定一些箱子,每个箱子里有一些石子,两个人轮流操作,每个人可以进行以下操作之一:
1.打开任意多的箱子
2.从一个打开的箱子中拿走任意多的石子
不能操作者判负,求先手是否必胜
先手必胜的状态为:给出的数字集合存在一个异或和为零的非空子集,则先手必胜
证明:
首先我们有状态A:当前的所有打开的箱子中的石子数异或和为零,且所有关闭的箱子中的石子数的集合中不存在一个异或和为零的非空...
分类:
其他好文 时间:
2014-11-26 21:00:24
阅读次数:
165