XOR Swap】的更多相关文章

swap(a, b): a ^= b b ^= a a ^= b 先明确一下,a ^ a = 0,同时对于一切数x ^ 0 = x 可以这样理解,第三行: b ^= a b ^= a ^ b b = b ^ a ^ b b = 0 ^ a b = a 第四行: a ^= b a = a ^ b a = (原来的a ^ b) ^ 原来的a a = b…
备份文件时看到的.我以前居然下过这东西. 2016-12-4 12:05:52更新 纯文本格式真棒.假如使用word写的我能拷过来格式还不乱?? Markdown真好. Bit Hacks By Sean Eron Anderson seander@cs.stanford.edu Converted to Markdown by Joe Gibson (@gibsjose) joseph.gibson@nasa.gov Edits and Table of Contents by Jeroen…
第三十八题 What is the bug in the following program? #include <stdlib.h> #include <stdio.h> #define SIZE 15 int main() { int *a, i; a = malloc(SIZE*sizeof(int)); ; i<SIZE; i++) *(a + i) = i * i; ; i<SIZE; i++) printf("%d\n", *a++);…
http://graphics.stanford.edu/~seander/bithacks.html Bit Twiddling Hacks By Sean Eron Andersonseander@cs.stanford.edu Individually, the code snippets here are in the public domain (unless otherwise noted) — feel free to use them however you please. Th…
题意:一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 I II. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 1<=n<=30000,0<=q<=200000:中途操作中保证每个节点的权值w在-30000到30000之间. 思路:树链…
题意:一张图,要求支持以下操作: 1.加边 2.删边 3.询问两点之间是否联通 100%的数据满足n≤10000, m≤200000 思路:LCT裸题,不需要维护任何信息 ..,..]of longint; fa,rev,q:..]of longint; n,m,i,x,y,k,j,top,s:longint; ch:string; procedure swap(var x,y:longint); var t:longint; begin t:=x; x:=y; y:=t; end; funct…
题意:N个点M条边的无向图,q次询问保留图中编号在[l,r]的边的时候图中的联通块个数. 询问加密,强制在线 n,m,q<=200000 题意:RYZ作业 以下转载自hzwer http://hzwer.com/4358.html 本人实力有限难以清晰描述 有一个比较猎奇的做法:首先把边依次加到图中,若当前这条边与图中的边形成了环,那么把这个环中最早加进来的边弹出去并将每条边把哪条边弹了出去记录下来:ntr[i] = j,特别地,要是没有弹出边,ntr[i] = 0;这个显然是可以用LCT来弄的…
题意:给定一棵树,要求维护以下操作: 1.删除连接(x,y)的边 2.将(x,y)之间连边 3.询问某点子树大小 对于100%的数据n<=200000,m<=100000 思路:第一道有加边删边的LCT 讲一下自己对LCT各个操作的理解 Access:最基本的操作,将一个点到LCT的根的点全部修改为重(实)边 可以理解为“全选操作”,配合Splay操作可以取出某段区间的信息 Splay:将X旋转到它所在链的顶部,这样就相当于将这条链中的信息集中到了X这个点上 LCT的splay要用栈pushd…
题意:有一张图,每条边有一个不同的编号,长度和权值,维护以下操作: 1.加边 2.修改边长 3.询问两点之间在最小权值最大的前提下的唯一路径长度 n<=100000 m<=300000 思路:RYZ作业 BZOJ上有四组数据的输入不完整,输出没问题 LCT维护最大生成树,维护子树和,和子树中权值最小的位置即可 ..,..]of longint; sum:..]of int64; f:..,..]of longint; w,l1,mx,fa,q,rev:..]of longint; n,m,x,…
题意:有一张无向图,每条边有两个权值.求选取一些边使1和n连通,且max(a[i])+max(b[i])最小 2<=n<=50,000 0<=m<=100,000 1<=ai ,bi<=50,000 思路:LCT模板 将a[i]排序,维护路径上b[i]的最大值 因为是无向图且连通情况不变,不用findroot检查是否连通,并查集即可 也许是OI生涯最后一次打LCT ..,..]of longint; rev,fa,mx,w,a,b,f,q,x,y:..]of longi…
#include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) {return x>y?x:y;} ];}Tree[Maxn*Len]; void Insert(int x) { ; bool k; ;i--) { k=x&(<<i); ) Tree[Now].next[k]=++cnt; Now=Tree[Now].next[k]; } } i…
http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 146    Accepted Submission(s): 51 Problem Description Claris loves bitwise operatio…
2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2142  Solved: 893[Submit][Status][Discuss] Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边. 图中可能有重边或自环. Output 仅包含一个整数,表示最大…
4269: 再见Xor Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 131  Solved: 81[Submit][Status][Discuss] Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整数N. 接下来一行N个非负整数. Output 一行,包含两个数,最大值和次大值. Sample Input 3 3 5 6 Sa…
www.lydsy.com/JudgeOnline/problem.php?id=2115 (题目链接) 题意 给出一张图,可能有重边和自环,在图中找出一条从1-n的路径,使得经过的路径的权值的异或和最大,每条边可以重复经过并且重复计算异或和. Solution 刚看到这道题,想了10分钟完全没有思路,于是就膜了题解. 我们先把图看成一棵树,那么我们所需要找出的路径可以分成一些环和一条从1-n的树上路径,至于树是怎么构造的以及那条从1-n的路径是怎么走的并不重要,因为我们可以通过在总路径上补环来…
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Status][Discuss] Description 几乎是一路看题解过来了.. 拖了一个星期的题目- - 已然不会概率DP(说得好像什么时候会过一样),高斯消元(打一次copy一遍). 发现异或题目的新解决方法:按位处理.. 发现DP新方法:高斯消元. f[k][i]代表第k位权值起点为i到终点时答案…
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i->j 权值为w,若w的k位为0,则f[i]+=1/du[i] * f[j],否则f[i]+=(1-f[j])/du[i] 注意我们现在在往回走,所以度数是i的而不是j的. 然后就可以高斯消元解出来了. 装X用模方程的lcm然后发现导致误差越来越大,WA出翔 代码: #include<cstdio&g…
Ba Gua Zhen Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description During the Three-Kingdom period, there was a general named Xun Lu who belonged to Kingdom Wu. Once his troop were chasing Bei Liu, he was stuck in the Ba Gua Zhen from Liang Zhuge.…
我觉得xor这东西特别神奇,最神奇的就是这个性质了 A xor B xor B=A 这样就根本不用在意重复之类的问题了 关于xor的问题大家可以去膜拜莫队的<高斯消元解XOR方程组>,里面写的很详细 我来扯两道bzoj上的例题好了 bzoj2115,求1-N最长xor路径,根据那个神奇的性质,我们先随便找一条1-n的路径作为标准路径 任意一条1-N的路径都等价于标准路径和某些环的xor 怎么找环?很简单,bfs下去,设d[x]表示1到x的一条路径xor值,如果到一条边x-->y时y已经访…
XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1364    Accepted Submission(s): 402 Problem Description XOR is a kind of bit operator, we define that as follow: for two binary base number A…
2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2794  Solved: 1184 [Submit][Status][Discuss] Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边. 图中可能有重边或自环. Output 仅包含一个整数,表…
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 ------------------------------------------------------------------ #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>   using namespace std;   typedef long double…
标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所有线性无关(两个或多个环异或得到) 然后在一些数中选出一个子集.使它们与一个给定的数的异或和最大,这就是高斯消元的问题了 利用高斯消元使每一位仅仅存在于最多一个数上 然后贪心求解就可以 #include<cstdio> #include<cstring> #include<ios…
Description Input Output Sample Input Sample Output HINT Source Day2 终于把这个史前遗留的坑给填了... 首先异或的话由位无关性,可以按位处理... 那么对于每一位,设f[i]表示从i出发第一次到达n且xor和为1的概率,out[i]为i的出边,那么转移就比较容易了... if(w(i,j)&xxx) f[i]+=(1-f[j)/out[i];// 这条边该位为1,需要xor上0,xor和才为1 else f[i]+=f[j]/…
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间不能异或所以不能直接求 发现每个二进制位是独立的,我们可以一位一位考虑,设当前考虑第i位 \(f[u]\)表示从u到n异或和为1的概率, \[ f[u] = \sum_{(u,v) \in E,\ w(u,v)的第i位是1} \frac{f(v)}{degree_u} \\ f[u] = \sum_…
4269: 再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. 我太愚蠢了连数组开小了以及$2^{31}$爆$int$都不造   线性基裸题啊.... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #in…
啦啦啦 题意: N 个点M条边的边带权的无向图,求1到n一条XOR和最大的路径 感觉把学的东西都用上了.... 1到n的所有路径可以由一条1到n的简单路径异或上任意个简单环得到 证明: 如果环与路径有交,异或后那块交就没了,相当于那块走了环上的路径: 如果环与路径没交,就是走到环上走一圈在回来,一去一回其他的地方又没了. 求一棵生成树,然后每一条非树边构成一个环,一共$m-n+1$个环 然后答案就是任取一些环的异或和与1到n路径异或和异或的最大值啦 实现上注意: 1.求生成树和简单环的异或和一遍…
[HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权的异或和. 特别注意,如果同一条边在路径中经过了多次,那么路径权值也要异或对应次数的边权. 请回答 这条路径的 期望权值 为多少. 数据范围:\(n \leq 100\) , \(m \leq 10^4\) .对于所有边,\(val_E \leq 10^9\). 思路及解法 A 首先,求异或问题拆成…
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复经过某些节点或边,当一条边在路径中出现多次时,其权值在计算“XOR 和”时也要被重复计算相应多的次数. 直接求解上述问题比较困难,于是你决定使用非完美算法.具体来说,从 1 号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下一个节点,重复这个过程,直到走到 N 号节点为止,…
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5338 题面: 5338: [TJOI2018]xor Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 269  Solved: 171[Submit][Status][Discuss] Description 现在有一颗以1为根节点的由n个节点组成的树,树上每个节点上都有一个权值vi. 现在有Q 次操作,操作如下: 1  x y    查询节…