高斯消元学习

1. 证明XOR满足交换律,结合律,是自身的逆运算。

  比如说,1^0 = 1   1^1 = 0  0^1 = 1 0^0 = 0

      1^1^0 = 0 = 1^0^1 = 0.

      a^b^a=b 即一个数异或两次相当于无效

2. 从N个数中选出两个数,使XOR和最大。

解法:

  我们知道两个数字之间的异或运算都是按位异或,也就是说把他们各自化成为二进制的形式,然后,每次查找与这个数字差别最大的数。

比如现在有,0111,0000,0101,1010. 我们查找最大的异或结果。

可以建立一个trie树。

二进制的比较,要从高位到低位,要使异或和最大,那么我们就枚举第i个数字,查找与第i个数字相差最大的数字是多少,高位优先。

比如说,查找与0 1 1 1 相互异或后得到的最大值的数字是多少,我们的思路肯定是从root开始,依次从高位开始寻找与0 1 1 1 相异或的数字,如果遇到相同的位置,那么就妥协处理。

3. lN个点的边带权的树,找一条路径使XOR和最大。

解法:

  任选一个根,h_i表示的是从根节点到节点i的路径的XOR和

  X到Y的路径XOR和表示为h_x XOR h_y

4. 从N个数中选出若干个,使XOR和为K,给出方案或指出不可行。

解法:

  X_i 为0,表示的是第i个数不选,X_i为1,表示的是第i个数选。

现在考虑K的第p位的情况:

  如果K的第p位是1,则第p个二进制位为1的数字有奇数个被选择

  如果K的第p位是0,则第p个二进制位为1的数字有偶数个被选择

  得到方程X_i1+X_i2+X_i3+...+X_is = Kp ( + 都是XOR )

联立60个方程,方程的解,等价于原问题的解。

时间: 2024-11-07 04:31:53

高斯消元学习的相关文章

hdu6465 高斯消元

题目链接:水题 高斯消元学习 高斯消元模板 题解:来自官方 1 #include<bits/stdc++.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cstdio> 6 #include<vector> 7 #include<stack> 8 #include<queue> 9 #include<

ACM学习历程—HDU 3915 Game(Nim博弈 &amp;&amp; xor高斯消元)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3915 题目大意是给了n个堆,然后去掉一些堆,使得先手变成必败局势. 首先这是个Nim博弈,必败局势是所有xor和为0. 那么自然变成了n个数里面取出一些数,使得xor和为0,求取法数. 首先由xor高斯消元得到一组向量基,但是这些向量基是无法表示0的. 所以要表示0,必须有若干0来表示,所以n-row就是消元结束后0的个数,那么2^(n-row)就是能组成0的种数. 对n==row特判一下. 代码:

ACM学习历程—HDU 3949 XOR(xor高斯消元)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题目大意是给n个数,然后随便取几个数求xor和,求第k小的.(重复不计算) 首先想把所有xor的值都求出来,对于这个规模的n是不可行的. 然后之前有过类似的题,求最大的,有一种方法用到了线性基. 那么线性基能不能表示第k大的呢? 显然,因为线性基可以不重复的表示所有结果.它和原数组是等价的. 对于一个满秩矩阵 100000 010000 001000 000100 000010 000001

学习高斯消元

点击打开链接     习题  行列式 高斯消元问题类型: 用LCM 保持整型 1. 基本的高斯消元,裸模板 HDU3359 2. 开关问题,用^操作代替 -, 求x[i]时候一样用*  poj 1222 1830 1753 3. 枚举自由变元, return -1 是因为出现[0,0,0,0,a]这种情况,return 0 是唯一解,否则是有自由变元 4. 取模方程 (a1*x1+a2*x2...)%P=b在初等行变换后,每次进行消元的时候将所有值模P,最后求解回带的时候利用扩展欧几里得来对每一

poj_1222_高斯消元

第一次学习使用高斯消元,将灯板化为线性方程组,进行求解. /*######################################################################### # File Name: poj_1222.cpp # Author: CaoLei # Created Time: 2015/7/20 15:48:04 ###################################################################

【BZOJ-1923】外星千足虫 高斯消元 + xor方程组

1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 766  Solved: 485[Submit][Status][Discuss] Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行包含一个“01”串和一个数字,用一个空格隔开.“01”串按位依次表示每只虫子是否被放入机器:如果第 i 个字符是“0”则代表编号为

线代之高斯消元

数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解.但其算法十分复杂,不常用于加减消元法,求出矩阵的秩,以及求出可逆方阵的逆矩阵.不过,如果有过百万条等式时,这个算法会十分省时.一些极大的方程组通常会用迭代法以及花式消元来解决.当用于一个矩阵时,高斯消元法会产生出一个"行梯阵式".高斯消元法可以用在电脑中来解决数千条等式及未知数.亦有一些方法特地用来解决一些有特别排列的系数的方程组. 2968: Lights  Time Limit(Common

矩阵算法 高斯消元 行列式 矩阵的秩

今天学习一下矩阵的基本算法 高斯消元是解线性方程组的有力工具. 基本思想是通过将增广矩阵经过行初等变化变成简化阶梯形矩阵. 下面采用的是列主元高斯消元法,复杂度为O(n^3). 很容易根据高斯消元法的过程得出行列式和秩的算法. 代码: /********************************************************* * ------------------ * * author AbyssalFish * ***************************

高斯消元 初见

今天,跟着HYM大神学习了高斯消元,思想很简单,不过用处很大,也有一些细节. 其实就是消元的思想,对n个方程不断消元,在解出一个未知数之后,回带求出其他未知数.如果回带时,我们发现方程左面为0,右面不为0,则无解:若左面为0,右面为0,则多解. cogs1845||bzoj1013 球星空间生成器sphere 题目大意:给出n维空间内一个球上的n+1个点,求圆心坐标. 思路:比较裸的高斯消元,唯一就是自己建方程.设圆心坐标(a,b,c,d,...),我们发现,球上各点到圆心距离相等,于是就有连等