- 博客(26)
- 收藏
- 关注
原创 模型(套路)总结
1:序列部分<1>:一个序列,有些位置确定,有些位置不确定。你要钦定未知位置的数,使得LIS最大。(bzoj5427)solution:考虑普通的LIS,维护f[i]表示长度为i的LIS的最小值。直接维护dp数组,如果位置固定,直接转移。否则考虑任意一个位置都可以补充。f[i] = min(f[i], f[i - 1] + 1); 维护一个delta代表移动了多少位就行。<...
2019-09-14 16:22:37
257
原创 易错警示
1:位运算的优先级是真的不行。甚至比大于号,小于号,等于号还要低。所以用到位运算,别管程序美不美,直接小括号括起来!!!!2:long long 类型 和 int 类型比较大小会出锅的。建议转到同一类型比较。3:对于模数非常大的情况下,快速幂有可能会爆炸long long。(p^2 >1e18)。这里就需要用到O(1)快速乘typedef long long LL;typedef l...
2019-09-14 16:22:25
316
原创 一些常用的常数优化
常数,决定了复杂度一样的算法得到分数的高低。一个101010倍常数?不得了!常用的常数优化:1:快读基础版:inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') {if (ch == '-')f = -1; ch = getchar...
2019-09-14 16:21:58
811
原创 莫比乌斯反演与狄利克雷卷积
积性函数对于gcd(a,b)=1,都有f(ab)=f(a)∗f(b)。那么f(n)是积性函数对于gcd(a,b)=1, 都有 f(ab)=f(a)*f(b)。那么f(n)是积性函数对于gcd(a,b)=1,都有f(ab)=f(a)∗f(b)。那么f(n)是积性函数欧拉函数ϕ(n)\phi(n)ϕ(n)是一个积性函数,对于一个素数ppp。有:ϕ(p)=p−1\phi(p)=p-1ϕ(p)=p−...
2019-09-14 16:21:42
401
原创 STL大法好
sort数组从1开始的整型排序:inline bool cmp(const int a, const int b) { return xx[a] < xx[b];}sort(a + 1, a + 1 + n, cmp);结构体排序:(结构体是poi)inline bool cmp(const poi &a, const poi &b) { if (a.x =...
2019-04-14 12:03:17
297
原创 主席树复习笔记
小总结:(静态全局第k小排个序就没了)(单点修改+全局第k小平衡树就没了 或者离散化+权值线段树(详见暗黑破坏神))(静态区间第k小一般的主席树或者分块,分块比主席树慢)(区间修改+区间第K小。主席树+线段树套树状数组 或者 分块块内二分)luogup3834静态区间第k小对于每个前缀建立权值线段树。每增加一个节点,只会修改一条链。采用引用的形式自上而下修改。...
2019-04-14 12:02:52
127
原创 线段树合并复习笔记
线段树合并和主席树不同的是。主席树的节点还要依赖之前的树结构。而线段树合并是若干个分离的线段树合并起来,在创建节点的时候有些不同。bzoj2212按照dfs的顺序处理。显然一个子树内的交换只会影响该子树,所以可以贪心得对于每个子树决定是否交换。算到叶子节点的时候新建一颗logloglog个节点的权值线段树。合并左右儿子的时候,实际上是合并左右孩子的两颗线段树。不交换的话就是前面的大权值区间的个...
2019-04-14 12:02:39
124
原创 容斥原理学习笔记
简单来说,容斥原理的核心就是减去不合法的。这个时候可能会多减,再把它加回来。一个经典的应用是,你有若干个限制,彼此独立。你要求满足这些限制条件下的答案。采用容斥原理是这样一个思路,先算出没有限制条件下的答案。再算出至少打破一个限制的答案。(就是我们强制要求一个限制满足,剩下的就不管他,因为我们是至少)。把答案减去,我们又发现我们多减了那些同时打破两个限制的情况。在反过来加上至少打破两个限制的...
2019-04-14 12:02:21
606
原创 杜教筛学习笔记
刀尖舞蹈如果数据很容易爆long&amp;nbsp;longlong\ longlong&amp;nbsp;long的话,你有几种处理方式:1:在爆炸的边缘试探正确写法:ans=(ULL)n∗(n+1LL)/2LL;ans = (ULL) n * (n + 1LL) / 2LL;ans=(ULL)n∗(n+1LL)/2LL;错误写法:ans=(ULL)n∗(n+1)/2;ans = (ULL) n * (...
2019-04-14 12:02:00
171
原创 Splay与LCT学习笔记
Splay1:rotate1:rotate1:rotate操作无论是左边旋到右边还是右边旋到左边,节点的相对高度都上升了。2:2:2:单旋splaysplaysplay可能会被卡掉,一条链单旋过后还是一条链。3:3:3:双旋分一下几种情况:(x−&amp;amp;gt;to)(x-&amp;amp;gt;to)(x−&amp;gt;to)tototo是xxx的fatherfatherfather,此时直接把x...
2019-04-14 12:01:37
292
原创 基于fhq-treap的区间问题
ezoj1852要求写一个序列数据结构,支持区间加,区间翻转,区间最大值。线段树结构能否支持区间翻转?线段树节点记录一个ls,rsls,rsls,rs,打翻转标记。每次下传就交换左右孩子。fhq-treap以下标为关键字分裂,treaptreaptreap中下标序列是始终不变的。理解成在下标序列上面挂的值在不停的变动。具体写法就是splitsplitsplit改成基于sizsiz...
2019-04-14 12:01:10
691
原创 点分治复习笔记
之前的记录:点分治可以处理一些普通的 tree dp 或者是树剖无法处理的树上路径问题。简单说就是在一棵树上做分治,考虑对于一个固定根的树,路径只有可能经过根节点,或者完全在它的子树中。后者可以分治递归下去解决。为了保证递归层数是logn 的。我们每次选子树树的重心作为子树的新根。这样节点总数就减少了一半。我们一般都会考虑无限制的经过根节点的情况(不考虑有一个更深的LCA),减去它完全在它...
2019-04-14 12:00:51
148
原创 线性基学习笔记
粘链接:https://www.cnblogs.com/ljh2000-jump/p/5869991.html题:1:板子题,查询一些数的子集的xor和的最大值。meet-in-the-middle。插到trie里面。O(2n2∗w)O(2^{\frac{n}{2}}*w)O(22n∗w)线性基板子 O(nlogn)O(nlogn)O(nlogn)2:查询一个数是否可以子集被xo...
2019-04-14 12:00:32
288
原创 CDQ分治学习笔记
三维偏序问题:每个元素有3个属性,a,b,c。求解对于每个iii,aj&amp;amp;lt;ai且bj&amp;amp;lt;bi且cj&amp;amp;lt;cia_j&amp;amp;lt;a_i且b_j&amp;amp;lt;b_i且c_j&amp;amp;lt;c_iaj&amp;lt;ai且bj&amp;lt;bi且cj&amp;lt;
2019-04-14 12:00:18
157
原创 线段树分治
(loj121)给你一张无向图,你要支持如下操作:1:删除一条边2:加入一条边3:查询某两个点对间是否联通①在线做法:LCT②离线做法:线段树分治口胡做法:把操作的顺序当做时间。每条边维护一个存活区间,代表这条边在这个时间区间里面活着。对时间轴建立一颗线段树,从线段树根开始dfs。进入一个子树就把它这个子树中完全存活的边的两个点用按秩合并并查集合并。一直到一个叶子的时候统计答...
2019-04-14 12:00:04
342
原创 SA复习笔记
(背的SASASA是从000到nnn的)几个数组的意义:sa[i]sa[i]sa[i]表示排名为iii的后缀的首字母位置。t[i]t[i]t[i]表示后缀首字母在iii这个位置的第一关键字的排名。t2[i]t2[i]t2[i]表示第二关键字排名为iii的后缀的首字母位置。height[i]height[i]height[i] 表示排名为iii和i−1i-1i−1的两个后缀的LCPLCPL...
2019-04-14 11:59:45
173
原创 左偏树复习笔记
左偏树的形态是向左偏的,每个节点维护左右孩子,权值,父亲和它到最远叶子的距离。①:一开始所有点都是孤立的。②:合并两个节点所在的堆? 一开始要找到这两个堆的根节点。然后从根往下走。假设A的权值小于B(否则就交换AB),那么只要合并A的右子树和B,把合并后的结果作为A的右子树。 递归引用操作。如果右孩子的深度大于左孩子了,就交换左右孩子。③:删除一个节点所在的堆的最小值?直接走到根,输出来,再...
2019-04-14 11:58:49
109
原创 AC自动机复习笔记
AC自动机可以处理多模式串匹配问题。问:事先给定若干个模式串(短一点的),多次询问一个文本串被多少个模式串匹配。解:AC自动机的建立过程:①:把这若干个模式串插入到trietrietrie树里面。②:第二层点的failfailfail指针指向根rtrtrt。再把第二层的点放进队列。③:按照bfsbfsbfs的顺序。拿出队列头的节点xxx,把它存在的儿子的failfailfail指针...
2019-04-14 11:58:31
144
原创 2-SAT学习笔记
2-SAT问题指的是,给你若干个0-1变量。并给你一些限制,让你求满足这些限制的可行解(字典序最小的解)。限制的种类包括以下几种:1:a一定是12:a一定不是13:a,b至少有1个是14:a,b最多有一个是15:a,b一定相同6:a,b一定不同一般思路是对于一个变量,建立两个变量(正,反)代表假设选什么的情况。用有向边来表达推出关系。 如果一个正点可以直接或者间接地推出它的反点,且...
2019-04-14 11:58:15
147
原创 Martix-tree定理
Martix-Tree定理求解图的生成树个数构造度数矩阵和邻接矩阵(有向图的度数矩阵就是一个点的入度,无向图就是它相邻的点都算上)(如果(u,v)有一条边,邻接矩阵就加一。)基尔霍夫矩阵=度数矩阵-邻接矩阵无向图:基尔霍夫矩阵去掉最后一行最后一列后的行列式。有向图:基尔霍夫矩阵去掉根所在行列后的行列式。luoguP4455#include <bits/stdc++.h>...
2019-04-14 11:57:55
213
原创 CRT和扩展CRT学习笔记
CRT(中国剩余定理)(孙子定理)一般的CRT只能用于解决bbb彼此之间互质的情况。大概想法是构造M=∏i=1kbiM=\prod_{i=1}^kb_iM=∏i=1kbi,对于第iii个方程,构造一组特殊的解tititi满足Mbi∗ti=1(mod bi)\frac{M}{b_i}*t_i=1(mod\ b_i)biM∗ti=1(mod bi)。最后答案就是∑i...
2019-04-14 11:57:26
399
原创 树上的操作solution
题面wzy实在是太强了,所以他百无聊赖之下决定出一道简单的问题。有一棵n个节点的树,以1号点为根,每个点可以有个权值,一开始每个点的权值都是0。你有m次操作,操作分为修改(modify) 和 查询 (query)。修改操作有3种,可以把一棵子树打回原形,升级和进化。形如 Modify1 x c 代表把以x为根的子树的权值变成x。 Modify2 x c 代表把以x为根的子树的权值统统加上c ...
2019-03-07 10:54:41
351
原创 小清新博弈题solution
小清新博弈题wzy是个lolita控。一天他遇到了一个难办的情况:他的两只lolita吵起来了!他的两只lolita的问题是这样的:有一个苹果森林,有n棵苹果树。森林里的每棵苹果树上都结有ai个苹果。lolita们非常喜欢吃苹果,所以她们为吃苹果制定了一个规则。两只lolita轮流吃苹果。在一个lolita的回合里,她可以从这n棵树任意选择几个苹果吃掉,注意每个树每次只能摘掉一个苹果(...
2019-03-07 10:50:31
139
原创 密码锁题解
前言:和网上的思路差不多。(或者说就是网上的思路)想法:50pts很容易想到用二进制来表示灯的状态。由于n&amp;amp;amp;lt;=20n&amp;amp;amp;lt;=20n&amp;amp;lt;=20,所以2202^{20}220的状态完全可行。状压dpf[s]f[s]f[s]表示灯的状态为sss的时候用的最少步数,转移就枚举用的是哪种操作,适用到哪个区间。O(2nnm)O(2^nnm)O(2nnm) 勉强。
2019-02-26 22:41:48
2542
原创 Miller-Rabin学习笔记
为什么要学习Miller-Rabin ?之前一直认为素性测试可以使用费马小定理的逆命题,虽说会有一定的概率判错,多选几个就好了。我现在才知道存在一种Carmichael Number。对于任意与n互质的数x, 都有 xn−1=1(mod&amp;amp;nbsp;n)x^{n-1}=1 (mod\ n)xn−1=1(mod&amp;amp;nbsp;n),那么n称作Carmichael Number。可以发现,无论我们...
2019-02-14 21:59:35
842
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人