码迷,mamicode.com
首页 >  
搜索关键字:c语言 交换变量 异或 不创建临时变量    ( 3515个结果
ZOJ 3591 Nim (连续子序列异或和)
题目链接:ZOJ 3591 Nim 题意:根据题目给出的代码得到n堆石头的各自的数量,求先手选出连续的若干堆并且必胜的方法数。(比如:3,1,1 每堆石头数是1,1,1.先手选出(1),(1),(1),(1,1,1) 这四种方案是必胜的,所以答案是4) 思路:在n堆取石头首先想到的是Nim博弈,连续的若干堆,即求连续子序列异或和为0的数量m,n*(n+1)/2-m就是答案 (Nim博弈结论,...
分类:其他好文   时间:2015-04-09 09:03:59    阅读次数:136
【POJ 1222】EXTENDED LIGHTS OUT
高斯消元解异或方程组方法介绍~...
分类:其他好文   时间:2015-04-09 08:49:59    阅读次数:130
Leetcode随想------Single Number-----关于异或的性质
异或满足交换律,结合律任何数X^X=0,X^0=X自反性 A XOR B XOR B = A xor 0 = A设有A,B两个变量,存储的值分别为a,b,则以下三行表达式将互换他们的值 表达式 (值) :A=A XOR B (a XOR b)B=B XOR A (b XOR a XOR b = a)...
分类:其他好文   时间:2015-04-08 10:51:53    阅读次数:138
ZOJ 3591 Nim 前缀和+位运算
题意:通过他给的代码,跑出 n个数a【i】。 然后取任意多个连续的数,让他们 异或操作。 计算有多少种取法,使操作后结果为0. 做法:连续就想到了前缀和。 把前i个a的异或操作结果放在 num[i]中, 那么a【i】到a【j】个数的异或结果就是 num[j]^num[i-1]。 还有num【i】自身代表了开头到a【i】这些数的异或结果。 然后只要计算有多少num【i】为0,以及多少 num[j]^num[i-1] 为0就行了。再把总方案数 c(n,2)减去为0的个数,就是答案了。但是普通...
分类:其他好文   时间:2015-04-07 21:44:43    阅读次数:231
[BZOJ1299]巧克力棒(博弈论)
题目:http://hzwer.com/1976.html分析:先Orz hzwer对于盒子外面的巧克力棒,就是Nim游戏。所以就很容易想到先手第一步最好从盒子中取出m根巧克力棒,使得这些巧克力棒的异或和为0,并且盒子中剩余的巧克力棒无论如何取出来都不能得到异或和为0(其实m就是所有巧克力棒的最长异...
分类:其他好文   时间:2015-04-07 00:28:19    阅读次数:161
CSU 1216 异或最大值
【题意】 给定序列q[1..n],求任意两数异或的最大值 数据范围:1 【分析】Trie用来从高到低保存0和1,然后爆搜:尽可能凑1,不然凑0 【代码】 WOC为什么是多组数据? #include #include #include using namespace std; const int K=32; const int L=3300000; typedef long...
分类:其他好文   时间:2015-04-06 23:16:51    阅读次数:178
算法入门心得
最近看了刘汝佳写的算法入门经典 感觉自己的基础实在太烂了 所以总结了一些我们比较容易犯的错误给大家看看(大牛就不要看了O(∩_∩)O)1.浮点数:两个整数计算的是浮点数的时候一定要把整数先化为浮点数 5-0.1计算机先把5变5.0之后再进行计算的2.异或运算:这个是个很神秘的东西如果要在一个数组中找...
分类:编程语言   时间:2015-04-06 20:14:05    阅读次数:146
堆排序
#include "stdafx.h"void temp(int *l,int i,int j){ l[i]=l[i]^l[j]; l[j]=l[i]^l[j]; l[i]=l[i]^l[j];}//使用异或有个问题,当i和j相等时,不能实现交换的目的void HeapSort_M...
分类:编程语言   时间:2015-04-05 23:08:11    阅读次数:205
ZSTUOJ 4191 无向图找环(dfs)
中文题 直接dfs下去即可,遇到重复访问的点,判断一下该环三部分异或和是否大于0 代码: #include #include #include using namespace std; const int N = 100005; const int M = 400005; int n, m; struct Edge { int u, v, w; Edge() {} ...
分类:其他好文   时间:2015-04-02 21:02:15    阅读次数:128
C++ 中的异或操作^
好好的利用异或可以产生神奇的效果。 异或运算的性质: 任何一个数字异或它自己都等于0。也就是说,如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,因为那些出现两次的数字全部在异或中抵消掉了。 例题: 给定大小是N的数组,数组里的元素互相不重复,元素的大小范围是1~(N+1),目标是找出第一个miss的数。要求时间复杂度O(N),空间是O(1)....
分类:编程语言   时间:2015-04-02 16:29:18    阅读次数:200
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!