博弈论(一):Nim游戏重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合...
分类:
其他好文 时间:
2015-03-10 15:15:57
阅读次数:
239
记得刚开始学C++的时候,也做过两个数的交换,当时只用过下面的第一种和第三种方法,今天在看传智播客Java视频教程的时候,学到了另两种方式假设a=10,b=20,交换a,b的值方法一,使用第三方的变量,也是最常用的方法int c=a;a=b;b=a;方法二,位异或运算a=a^b;b=a^b; ...
分类:
其他好文 时间:
2015-03-10 10:19:11
阅读次数:
165
基本运算 +数字加法及字符串连接 -数字减法 *数字乘法 /数字除法 Mod求余数 \求商数 &字符串连接 ^次方 =相等 不相等 >=大于或等于 >大于 <=小于或等于 <小于 Not非 And且 Or或 Xor异或 循环及决策 if....then若.....
分类:
其他好文 时间:
2015-03-10 00:05:49
阅读次数:
188
考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和。答案时query(L)^query(R)^a[lca]。这种方法在支持区间加法、减法的树上询问的时候可以避免树链剖分。可能爆栈,考虑手动开栈。(诶诶Tarjan预处理lca的时候怎么没手动开栈?不要在意^_...
分类:
编程语言 时间:
2015-03-09 22:26:08
阅读次数:
216
这个题用位运算就非常简单了,前提是首先熟悉位运算,这里用到一个异或运算,也就是 ^ 这个符号,他的运算规则是:相同为0,不同为1。知道了这个之后,就容易想到相同的两个数异或之后为0,所以下面很关键的一步,也是我想了好久也没想起来的一步,就是把所有的数都异或一遍,那么最后剩下的一定是那个一个的,还有一...
分类:
其他好文 时间:
2015-03-09 22:23:18
阅读次数:
223
把每一行m个数所有的素因子看做一堆,就把问题转化为n堆的Nim游戏。然后预处理一下10000以内每个数素因数的个数,再根据书上的Bouton定理,计算一下n行素因数个数的异或和。为0是先手必败局面,输出NO,否则输出YES 1 #include 2 #include 3 4 const int...
分类:
其他好文 时间:
2015-03-09 14:23:26
阅读次数:
173
//交换两个变量的值,不使用第三个变量。
//有两种解法, 一种用算术算法, 一种用^(异或)
//异或:相同为0,不同为1。相当于减法。
#include
int main()
{
int a = 8;
int b = 9;
printf("初始状态:a = %d, b = %d\n",a,b);
a = a + b;
b = a - b;
a = a - b;
...
分类:
其他好文 时间:
2015-03-09 12:51:24
阅读次数:
166
异或运算法则:相同为0,不同为1
异或运算符∧也称XOR运算符。
它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。
即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。
“异或”的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为(0)。
下面举例说明∧运...
分类:
其他好文 时间:
2015-03-06 17:03:54
阅读次数:
181
对原序列取前缀异或值,变成pre[1...N],然后询问等价于求max{a[N]^x^pre[i]}(l-1#define INF 2147483647#define N 300001#define MAXBIT 25int root[N=0;--i) { int Bit=(...
分类:
其他好文 时间:
2015-03-06 12:39:52
阅读次数:
105
在数据传输或者数据下载过程中,通常要保证数据的可靠性和安全性,所以,发送方和接收方要约定共同的协议,而这个协议中常常会出现校验和的运算。C代码如下: 1 unsigned char calc_nmea_checksum(const char * setence) 2 { 3 unsigned...
分类:
编程语言 时间:
2015-03-06 09:36:25
阅读次数:
201