
=======数据结构=======
Lngxling
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数论模板
1. 辗转相除法(欧几里得除法) int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } 或者c++直接用函数__gcd() 2.扩展欧几里得 int exgcd(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; return a; } int k=ex...原创 2018-04-15 21:51:48 · 370 阅读 · 0 评论 -
zoj - 2460 元素 —— 线性基
思路:要使得最后得到的魔力值最大,只需要根据矿石的魔力值从大到小使用 几个数异或,不能和之前能异或出的数相同,恰好是线性基插入操作 #include <iostream> #include <cstdio> #include <cmath> #include <vector> #include <map> #include <...原创 2018-10-10 09:00:50 · 261 阅读 · 0 评论 -
HDU - 3949 XOR —— 线性基
题意: 询问给定的数列里第k大的异或和 思路: 线性基 将所有数插入线性基之后,所有62个数有的是0,其他数最高位1的位置不相同 用类似高斯消元的方法将线性基变为每个数只有最高位1,这样就可以方便的求出第k大的异或 最大的异或值一定是这些里面所有数的异或(全部能为1的位置都是1),第二大的异或值一定是最大的去掉最后一个1,依此类推(其实结果就是k的二进制里的1的下标对应的数的异或) ...原创 2018-10-10 09:27:03 · 301 阅读 · 0 评论 -
bzoj - 2115 Xor —— 线性基
题意: 求图中从1点到n点的所有路径中边权值异或的最大值 思路: 首先要理解,路径可以任意异或环 像图中,从1到n的黑色路径,可以由任意一条红色路径到一个环,走遍环之后,再通过红色路径回到黑色路径上,这时红色路径上的值被异或了两次为0,结果就相当于是黑色路径异或蓝色环 环是没有大小限制的,甚至可以包括黑色路径,所以通过这种方法可以由任意一条从1到n的路径得到所有的路径 剩下的问题一...原创 2018-10-10 09:51:24 · 341 阅读 · 0 评论