线性基
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
线性基补充(删除操作以及区间操作)
离线方法:维护线性基中每个元素的最晚删除时间。 在这篇里面有讲。 Code: #include<bits/stdc++.h> #define maxn 2000005 using namespace std; char cb[1<<20],*cs,*ct; #define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<20,stdin),cs==ct)?0:*cs++) template<class T>i原创 2020-05-11 18:48:49 · 1639 阅读 · 0 评论 -
20200417【网格路径异或最大值,树上x到一段编号区间的最短距离,多个区间的不同权值种数】
T1:签到 因为题解说的实在太好了所以就直接粘贴了。 在取奇/偶数个数使得异或和最大,给所有权值加上一个2N2^N2N后加入线性基,如果需要取奇数个数就带入0,取偶数个数就带入2N2^N2N到线性基中查询最大异或和就可以了。 T2:树 一段连续的编号不好用数据结构维护距离,但是用一次dfs/bfs可以很方便地求出每个点到一段连续编号的最近距离。 O((n+m)log2)O((n+m...原创 2020-04-18 11:38:17 · 283 阅读 · 0 评论 -
模拟赛20200222【路径异或值种数,贪心模拟DP,分数逼近→斜率最小值】
T1 小b爱旅行: 题解: 这题与BZOJ2115的想法差不多,任意找出一棵生成树,从1出发的所有路径都可以表示为一条树链异或上一些环。求出环的线性基,对于每条树链在线性基上跑一遍去重(异或出的最小值相同的就是重复的),数一下不等价的树链条数乘上2线性基大小2^{线性基大小}2线性基大小就是答案。 如果有加边操作: 因为只用考虑1所在的连通块,所以加入的边如果两个端点都不在1所在的连通块我们就...原创 2020-02-22 20:47:00 · 233 阅读 · 0 评论 -
模拟赛20200221(zjx)【带删除线性基(线段树分治),不经过某条边的最短路(最短路树),嵌套for循环循环次数(拉格朗日插值)】
T1: 题意: 给出mmm个值在[0,232)[0,2^{32})[0,232)内的数,kkk次操作添加一个数或删除一个数,或询问某个xxx是否能被这些数异或得到。 m,k≤105m,k\le10^5m,k≤105 题解: 线性基套个线段树分治即可。网上好像有基于线性基性质的神奇做法,不过复杂度似乎都是两个log。 Code: #include<bits/stdc++.h> #defi...原创 2020-02-21 22:43:43 · 480 阅读 · 1 评论 -
HDU3949 XOR【线性基】
线性基求第k小模板题 模板Code: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 10005 #define LL long long using namespace std; int T,n,Q,cnt; LL d[61]; bool zero; long long s...原创 2019-08-20 14:50:55 · 151 阅读 · 0 评论