POJ 2155 二维线段树
思路:二维线段树就是每个节点套一棵线段树的树。
刚开始因为题目是求A[I,J],然后在y查询那直接ans^=Map[i][j]的时候没看懂,后面自己把图画出来了才理解。
因为只有0和1,所以可以用异或来搞,而不需要每次都需要修改。
#include
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-08-09 21:32:39
阅读次数:
205
本文包括如下几个内容:异或算法;异或加密;两个整数交换问题...
分类:
其他好文 时间:
2014-08-08 21:21:45
阅读次数:
383
void cvXor计算两个数组中的每个元素的按位异或。 void cvXor (const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask = NULL); 得到dst(I) = src1(I)^src2(I)。 你提到的...
分类:
其他好文 时间:
2014-08-08 15:53:36
阅读次数:
254
很容易想到为二进制的与或非。
加法分为三步:
1 各位相加不进位 0 + 0 =0, 0+1 = 1,1+0=1,1+1=1,很明显是异或运算
2 进位 1+1 =10进位,其余均不进位 ,进行左移动一位
3 一直循环
代码:
#include
using namespace std;
int sum(int data1,int data2){
int sum,carry;
...
分类:
其他好文 时间:
2014-08-07 19:02:00
阅读次数:
196
实例:将数组的头尾两端依次对调(采用异或的方法实现两数的交换,不需要临时变量)...
分类:
其他好文 时间:
2014-08-07 15:44:40
阅读次数:
127
曾经做过一道水题找出除了一个数字之外,其他数字都有2个。直接异或 最后结果就是那个数。
现在变成存在2个不一样的数字,假设成x,y,那么可以O(n)求出x^y,因为x,y不同,所以异或的结果不为0,看成2进制数,那么找到第一位为1 的位置,将这个位置设置为划分点,数组里所有这个位置为1 的异或一次,所有为0的再异或一次,最终求出的两个即为两个独特的数字。
#include
#include ...
分类:
其他好文 时间:
2014-08-07 03:06:48
阅读次数:
226
UVA 1566 - John
题目链接
题意:给定n堆糖果,每次取一堆任意个数,取到最后一个的输
思路:anti-Nim,推导出来就是如果全为1,判断1的奇偶,如果不为1,就和Nim问题是一样的,判断异或和
代码:
#include
#include
int t, n;
bool solve() {
scanf("%d", &n);
int ...
分类:
其他好文 时间:
2014-08-06 14:54:51
阅读次数:
394
题意:
求题目中的式子 - -b
思路:
推递推公式 比赛时候队友就说数字上有关系 but没推出来 - -b 题解有过程:
推的过程中最巧妙的就是利用异或的性质 相邻两个数字相当于修改二进制最后两位 不过这样做通过异或出来的结果是相同的
题目中数字太大 用java比较好写 处理递推的问题常用记忆化搜索
代码:
import java.util.*;
import...
分类:
其他好文 时间:
2014-08-06 11:55:01
阅读次数:
268
写这篇文章的主要目的就是一个不断积累的过程,
文中提到的方法其实平时很少用到,就当做是知识扩展吧
位运算中常见的一个操作 与& , 或| , 非~ 异或 ^ 左移位>
定义我就不说了,记录几个用法直接上代码了
1,求两个数的平均值(有效防止溢出的位运算方法)
int ave(int a,int b)
{
reutrn (a&b) + ((a^b)>>1)
}
解释下,...
分类:
其他好文 时间:
2014-08-05 22:32:40
阅读次数:
247
位运算是一种针对二进制数的一种运算
位运算 共有六种
都有其对应得操作符号
& (and) 位于
| (or) 位或
~ (not) 取反
^ (xor) 异或
>> (shr) 右移一位
运算说明:
=== 1. and...
分类:
编程语言 时间:
2014-08-04 17:43:38
阅读次数:
289