
线性基
Icefox_zhx
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
sgu275 线性基模板题
高斯消元求线性基,O(nlogw)O(nlog w),两种写法。第二种代码短,但是不能保证性质。原创 2017-11-27 19:24:21 · 864 阅读 · 0 评论 -
bzoj3569 DZY Loves Chinese II(图论+线性基)
给定一张无向连通图,多次询问删掉k条边之后是否连通。 我们先搜出一棵生成树,对于每条非树边我们随机一个权值给它。 树边的权值就是所有覆盖它的非树边的权值的异或和。 那么删掉k条边之后不连通当且仅当这k条边的权值的一个子集异或和为0 即把一条树边及覆盖它的所有非树边都删去了。用线性基O(klogw)O(klogw)O(klogw)即可判断。怎么计算树边的权值呢?首先一个点异或上所有与他相...原创 2018-05-26 11:36:28 · 297 阅读 · 0 评论 -
bzoj2844 albus就是要第一个出场(线性基)
首先有一个结论:一共n个数,线性基基底为m个数,那么一共有2m2m2^m个不同的数,每个数的出现次数为2n−m2n−m2^{n-m} 我们先求出< x的不同的数有多少个,然后∗2n−m∗2n−m*2^{n-m},+1即可。#include <bits/stdc++.h>using namespace std;#define ll long long#define in...原创 2018-05-25 22:05:07 · 326 阅读 · 0 评论 -
bzoj4269 再见Xor(线性基+贪心)
线性基裸题。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010inline char gc(){ static char buf[1<<16],*S,*T; if(T==S){T=(S=buf...原创 2018-05-25 21:17:21 · 309 阅读 · 0 评论 -
bzoj2115 [Wc2011] Xor(线性基+图论)
可以证明:1到n的所有路径可以由一条1到n的简单路径异或上任意个简单环得到。 于是我们搞出一颗生成树即可,其余的m-(n-1)条非树边分别对应一个简单环。我们把这些简单环的权值异或和都扔到线性基里去。 然后d[n]一定要选,再线性基贪心的选即可。 复杂度O(mlogV)O(mlogV)O(mlogV)#include <bits/stdc++.h>using namespa...原创 2018-05-20 22:13:50 · 209 阅读 · 0 评论 -
bzoj2460 [BeiJing2011]元素(贪心+线性基)
同bzoj3105:portal#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 1010inline char gc(){ static char buf[1<<16],*S,*T; if(S==T){...原创 2018-05-18 14:52:23 · 235 阅读 · 0 评论 -
bzoj3105 [cqoi2013]新Nim游戏(贪心+线性基)
先手如果想保证必胜,就要给后手留一个线性无关的子集。 因此我们就是要在保证剩下元素线性无关的前提下使得剩下元素的和最大。 我们贪心地从大往小往线性基里加数,如果被消成0了就必须拿走。 至于证明嘛,我不会拟阵!原创 2018-04-22 22:41:11 · 281 阅读 · 0 评论 -
bzoj4568 [Scoi2016]幸运数字(树上倍增+线性基)
多次询问路径权值集合的子集的最大异或和。 很容易想到线性基。 我们树上倍增跳lca的同时,暴力合并出我们的线性基即可。 复杂度O(nlogn602+mlogn602)O(nlogn60^2+mlogn60^2) 按道理应该过不去,不过可以卡过去qaq 可以考虑写st表去掉一个logn。tips:人生一大悲痛,原来我一直写的倍增是有问题的qaq,注意那个预处理时的跳倍增的i,我一直以为写成n原创 2018-04-22 22:19:21 · 270 阅读 · 0 评论 -
hdu3949 XOR(求所有的异或和的第k小,高斯消元求线性基)
首先线性基很妙啊。可以来这里学习下:传送门 然后板子基本就是高斯消元?蒟蒻还不会高斯消元。。。待填坑。反正就是用log w级别的数,代替了原来的n个数。在什么意义上这两个东西相等呢?就是这log w个数(叫做线性基),通过线性组合可以得到所有的n个数。一般用于求解异或和最值的问题。板子见 传送门。此题是求第k小的异或和。根据线性基的性质,我们可以得到第k小的就是:把m个线性基从小到大排序,分别叫v原创 2017-11-27 19:11:02 · 615 阅读 · 0 评论 -
bzoj4184 shallot(线段树时间分治+线性基)
我们按时间建线段树,把所有数的存在时间求出来,一定是一个连续的区间,插到线段树对应区间上。线段树每个节点挂一个vector来存数。这样就把删除操作避免掉了。然后从上到下dfs一遍线段树,把每个叶子的线性基合并出来即可,复杂度O(nlognlogw)O(nlognlogw)O(nlognlogw) 空间O(nlogn+nlogw)O(nlogn+nlogw)O(nlogn+nlogw)#inc...原创 2018-06-25 21:33:11 · 368 阅读 · 0 评论