也算是一道模板题吧,只需按照SG函数的定义求出每个值的SG,然后异或就可以了。 1 #include
2 #include 3 #include 4 5 using namespace std; 6 const int N=10005; 7 int sg[N];
8 bool vis[N];...
分类:
其他好文 时间:
2014-06-04 17:27:21
阅读次数:
200
或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。
异或的性质:
1、交换律:a^b = b^a;
2、结合律:(a^b)^c = a^(b^c);
3、对于任意的a:a^a=0,a^0=a,a^(-1)=~a。
了解了上面这些,来看看这个,很重要,后面的程序都要用到这个结论:
对于任意的a,有a^b^c^...
分类:
其他好文 时间:
2014-06-03 03:19:56
阅读次数:
267
设FA为A的牌中数字异或和,FB为B的。则有性质:ans =
(所有的(A&B=0)个数 +
(FA=FB且A&B=0)的个数)/2。即所有的FA>FB的个数(除2是因为这里FA>FB的个数等于FA#include #include
#include #include using namespace...
分类:
其他好文 时间:
2014-06-02 20:01:12
阅读次数:
195
逻辑函数的化简
先补点各种门的 basic knowledge
NAND 与非 NOR或非 XOR异或 XNOR 同或
对于同或,异或之前一直没搞明白。。。。那个该死的标记老是混淆,也不知道为嘛标记的发明人为嘛要那么标记
。。。现在知道了XOR。。。所以异或的标记是一个圈中间一把×
...
分类:
其他好文 时间:
2014-06-01 10:28:14
阅读次数:
251
思路:上篇博文中已经了解到异或去重的原理,而且知道如果只有一个只出现一次的数字的求法,但这里是有两个只出现一次的数字,我们便要想办法把他分为两个子数组,每个子数组中包含一个只出现一次的数字,其他的数字都出现了两次。剑指offer上的思路很巧妙,依然从头到尾异或所有的数字,这样得到的结果实际上就是两个只出现了一次的数字异或的结果,我们在异或后的结果中找出其二进制中最右边为1的位,该位既然为1,说明异或的两个数字对应的该位肯定不同,必定一个为1,一个为0,因此我们可以考虑根据此位是否为1来划分这两个子数组,这样...
分类:
其他好文 时间:
2014-06-01 09:58:08
阅读次数:
245
写一个函数,求俩个整数之和,要求函数体内不得使用+、-、*、/
四则运算符合。看到题目,我们知道,现在只有位运算可以用了,那就用位运算吧。第一步:对2个数的每一位相加,但不进位,我们可以用异或运算完成。第二步:找到进位的位置,并计算进位的值,我们先用与运算可以找到位置,然后左移一位,得到进位的值(比...
分类:
其他好文 时间:
2014-05-28 00:01:28
阅读次数:
369
出题:给定一个数字序列,其中每个数字最多出现两次,只有一个数字仅出现了一次,如何快速找出其中仅出现了一次的数字;分析:由于知道一个数字异或操作它本身(X^X=0)都为0,而任何数字异或操作0都为它本身,所以当所有的数字序列都异或操作之后,所有出现两次的数字异或操作之后的结果都为0,则最后剩下的结果就...
分类:
其他好文 时间:
2014-05-25 22:21:55
阅读次数:
411
2014百度之星资格赛——XOR SUM
Problem Description
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。P...
分类:
其他好文 时间:
2014-05-24 20:53:55
阅读次数:
266
Xor Sum
Problem Description
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeu...
分类:
其他好文 时间:
2014-05-24 17:53:54
阅读次数:
177
题目:输入一个整型数组,数组里除了两个数出现一次之外,其它所有数字出现的次数都是2次,求这两个数字。要求时间复杂度为O(n),空间复杂度为O(1)
1 题目要求时间复杂度为O(n)并且空间复杂度为O(1)。这个时候朴素的方法利用数字来记录出现次数的方案都是不行的。
2 根据题目的特点,只有两个数出现一次,其它的所有数据都是出现2次。如果这两个数是a和b,那么对这个数组异或的结果就是a^...
分类:
其他好文 时间:
2014-05-24 14:17:24
阅读次数:
258