摘要: 没什么说的, 高斯消元解异或方程组, 板子要多打打,有点不熟, $bitset$优化,$O(n^{3}/64)$ 看起来是$O(n^{2})$,不过不同行的$bitset$异或需要$O(n)$ cpp include using namespace std; const int N=1606,dx[ 阅读全文
posted @ 2019-10-14 21:41 lsoi_ljk123 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 对于某些树形背包,第二维跟子树大小有关,且不超过$siz[x]$, 我们原来会写成类似于这样: 时间复杂度$O((\sum_{u=1}^{n}\sum_{v}^{(u,v)\in E} 1) n n)=O((n 1) n n)\approx O(n^{3})$ 但我们显然可以优化,限制背包大小,如: 阅读全文
posted @ 2019-10-14 21:30 lsoi_ljk123 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 荒岛野人题解 我真的是sha diao,这也没看出来, 两个野人不相遇,即是他们位置+走的步数mod m不相同,即不同余, 那我们只要枚举m,找出使条件满足的最小m不就行了 cpp include using namespace std; const int N=20; int n,c[N],p[N 阅读全文
posted @ 2019-10-12 22:01 lsoi_ljk123 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 粟粟的书架题解 第一次见到这种二合一的题, 开始的时候居然死磕二维主席树, 又是屈辱看题解系列, 其实~~很~~比较好做 第一部分$R, C≤200,M≤200000,1≤Pi,j≤1,000$ 这一部分可以用两个数组来记录: $num[i][j][k]$:代表1~i,1~j的矩形中小于等于k的书页 阅读全文
posted @ 2019-10-12 21:26 lsoi_ljk123 阅读(151) 评论(0) 推荐(0) 编辑
摘要: CF593D Happy Tree Party题解 水题树剖,维护乘积和单点修改的线段树 但会爆long long,用double 神奇维护??? cpp include using namespace std; define ll long long define lc x=y)?maxx:x y 阅读全文
posted @ 2019-10-12 17:24 lsoi_ljk123 阅读(166) 评论(0) 推荐(0) 编辑
摘要: CF739B Alyona and a tree题解 题目描述: Alyona有一棵有 n 个节点的树。这棵树的根节点是 1。在每个节点里,Alyona写了一个正整数,在节点 i 她写了正整数$a_{i}$。\ 另外,她在这棵树上的每条边上写了一个正整数(不同边上可能有不同的数)。 让我们定义 di 阅读全文
posted @ 2019-10-12 17:13 lsoi_ljk123 阅读(259) 评论(0) 推荐(0) 编辑
摘要: CF1093GMultidimensional Queries题解 于 "此题" 一样,只不过多了单点修改和区间查询, 怎么维护,套个线段树即可。 cpp include define ll long long define lc x'9'){if(ch==' ') F= 1; ch=getchar 阅读全文
posted @ 2019-10-12 12:16 lsoi_ljk123 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 看守题解 此题是 "这一题" 的简化版, 这道题看上去很难,曼哈顿距离之和就足以吓跑一大堆人, 但我们一看,D define ll long long define re register using namespace std; const int N=1e6+6,inf=2e9; struct 阅读全文
posted @ 2019-10-12 07:16 lsoi_ljk123 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 小偷题解 一个裸的背包,不过加了一点限制, ~~鬼知道他为什么被评为紫题~~ 从后向前转移,每次将大于限制时间的清空即可。 ~~即便如此简单,我还调了这么久,我太弱了,WuWuWu~~ cpp include using namespace std; const int N=1006,M=52; i 阅读全文
posted @ 2019-10-12 07:05 lsoi_ljk123 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 组合数问题题解 水题,~~但我为什么想不出~~ 屈辱看题解系列~~ 就是求n k中选mod k余r 的方案数之和 我们不妨设一个dp状态:$f[i][j]$表示i中选mod k 余 j的方案数之和 显然,$f[i][j]=\sum_{p=0}^{i/k} C_{i}^{p k+j}$ 所以,它也适用 阅读全文
posted @ 2019-10-11 22:37 lsoi_ljk123 阅读(133) 评论(0) 推荐(0) 编辑
摘要: Elaxia的路线题解 求两组最短路的最长公共路径 先跑正图反图, 求出两组的最短路径树, 然后在一组最短路径树上拓扑, 另一棵最短路径树当存在同样的边时更新dp, cpp include using namespace std; const int N=1500; int n,m,s1,s2,t1 阅读全文
posted @ 2019-10-10 21:58 lsoi_ljk123 阅读(105) 评论(0) 推荐(0) 编辑
摘要: CF1140G Double Tree题解 我实在太弱了,想不出看题解竟然看不懂$O(n)$做法,不过好歹得到了一点启发,自己写下了$O(nlog_{n})$的倍增的极其丑陋的代码: 预处理大部分思路跟楼上巨佬相同, 将图视作两棵树,一棵全是奇点,编号为0,一棵全是偶点,编号为1,两部分的对应点之间 阅读全文
posted @ 2019-10-05 20:02 lsoi_ljk123 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 修筑绿化带题解 我的做法实际上神奇且麻烦,大家其实可以看一下别人的做法。 这是一个单调队列优化DP题(~~废话~~)。 我的大概做法是:将每个c乘d的矩形化成一个点,将从a乘b的矩形中选一个c乘d的矩形转化为:在(a c+1) (b d+1)的矩形中选一个值最小的点。 具体做法如下: 1.求出二维前 阅读全文
posted @ 2019-09-06 21:44 lsoi_ljk123 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 点分治学习笔记 一.理解: 点分治,运用了分而治之的思想,每次算出根及不同子树之间的贡献,再将每棵子树看作一棵新的树,以重心为根继续递归。 其好处主要是将递归层数限制在$O(log_{2}n)$下,且每次最多不会遍历超过n个点,使总时间在$O(log_{2}n)$下。 二.操作: 1.找重心:(分为 阅读全文
posted @ 2019-08-30 12:49 lsoi_ljk123 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 树上游戏题解 @ sxd666888巨佬,太巨了,$O(n)$做法虐爆全场。 但是细节有点没讲清楚(~~我理解能力太差了~~) 我来补充一下细节(~~大佬认为我们理所应当理解的东西~~) $upd:$(作者上面有些图画错了,每一小树块中不应该包括蓝色的点,难以修改,敬请谅解。) 首先,删除某一种颜色 阅读全文
posted @ 2019-08-28 20:29 lsoi_ljk123 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 高速公路题解 我们看一看题,就知道概率是是区间内所有线段的权值和/线段个数。 那么,我们需要动态维护区间的数据结构, 很容易想到线段树, 考虑,如何将两个区间合并: 注:以下线段树上的每个点的$sum$在代码中为$sum2$,仅为方便理解。 不妨设每个区间$[l,r]$内的所有线段权值和为$w$,$ 阅读全文
posted @ 2019-08-24 19:00 lsoi_ljk123 阅读(191) 评论(0) 推荐(0) 编辑
摘要: Blue and Red Tree题解 首先,我们很容易发现在两棵树上连接相同的点的边无需删去。 接着,首先删那条边? 我们把红树上不与蓝树重合的边看作覆盖蓝树边的路径, 那么,我们首先删除被红树边覆盖多次的边么? 肯定不行,删除这条边后,就不存在构成其他覆盖这条蓝边的红边所需的蓝边链了。 所以,我 阅读全文
posted @ 2019-08-22 19:48 lsoi_ljk123 阅读(276) 评论(0) 推荐(0) 编辑
摘要: LCA题解 神奇化简题,谁看得出这是树剖。 首先,$lca$的祖宗对$lca$都有贡献,我们不妨将$0$到$lca$路径的权值都加$1$,则$lca$的$deep$就为$0$到$lca$的路径权值和 则$\sum_{i=l}^{r}deep[lca_{i}]=\sum_{i=l}^{r}\sum_{ 阅读全文
posted @ 2019-08-22 19:30 lsoi_ljk123 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 序列分割题解 看上去是区间$DP$题,实则不然: 毕竟区间$DP$ $O(n^3)$的复杂度难以优化, 那么,我们是不是可以想到, 每一块的贡献是否与切割顺序无关? 证明一下: 假设区间$[l_{1},r_{3}]$,被分割为$[l_{1},r_{1}],[l_{2},r_{2}],[l_{3},r 阅读全文
posted @ 2019-08-22 19:27 lsoi_ljk123 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 征途题解 恶心题。~~我太弱了~~ 回到正题, $v^2=\frac{\sum_{i=1}^m(v_{i} \bar{v})^2}{m}$ $v^2 m^2=m \sum_{i=1}^m(v_{i} \bar{v})^2$ 将每个式子拆开: $m (v_{i} \bar{v})^2$ $m ({v_ 阅读全文
posted @ 2019-08-22 16:24 lsoi_ljk123 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 特别行动队题解 ~~刷水题什么的最愉快了。~~ 题意十分明了,就是选出一种分配方案将士兵分为若干组,使修正后的战斗力最大。 我们先可以写出暴力dp转移: 设$f[n]$为将前$i$个士兵分组,且第$i$个士兵为最后一组最后一个的最大战斗力。 $f[i]=max_{j=1}^{j define ll 阅读全文
posted @ 2019-08-22 15:45 lsoi_ljk123 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 小技巧之费用前移 有些时候序列$dp$看似是有后效性的,但是换一种角度考虑,算出这个点$i(1 using namespace std; const int N=106; int n,c,r,f[N][N][2],w[N],s[N],sum[N]; inline int read(){ int T= 阅读全文
posted @ 2019-08-21 22:08 lsoi_ljk123 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 最小树形图(朱刘算法)学习笔记 蒟蒻理解不透彻的地方还请各位dalao多多包涵。 树形图,应该就是指能从根节点到达其他节点的有向的树形结构, 最小树形图则是权值和最小的树形图(~~废话~~) 一般来说,分为三步: 1.选出每个点的最短边[同一个环中的不算],并记录(为判环缩环作准备)。(若有点无最短 阅读全文
posted @ 2019-08-21 21:37 lsoi_ljk123 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 斯坦纳树学习笔记 ~~其实原理不是很懂,不过感性理解一下,咳咳~~ 大概就是有m个点,求满足其中指定n个点被覆盖/或者blablabal其他情况的最小值。 (为什么是大概,~~反正几乎不会考,随便水水算了~~) 可以肯定最优解是树形结构(为什么我也不知道)。 一般是状压,好像还有其他的, 如 "[A 阅读全文
posted @ 2019-08-21 21:07 lsoi_ljk123 阅读(198) 评论(0) 推荐(0) 编辑
摘要: problem a题解 分析: 根据成绩比他高的人数$a_{i}$和比他低的人数$b_{i}$可以推出他的排名区间$[l_{i},r_{i}],$ 其中$l_{i}=b_{i}+1,r_{i}=n a_{i}$ 且$[l_{i},r_{i}]$的人成绩一定相等,并与除此区间外的人的成绩都不相同 显然 阅读全文
posted @ 2019-08-15 17:01 lsoi_ljk123 阅读(106) 评论(0) 推荐(0) 编辑