随笔分类 -  分治

分治
摘要:https://loj.ac/problem/2090 题解: 考虑每次取矩形较大那一维的中线,跑dij求出每个点到中线上的点的最短距离。 对于每个询问,都枚举中线上每个点为中转点问一下,按照在左边还是右边分治下去,写起来类似整体二分。 可以分析出来矩形面积*中线长度极限是当$n=m$时取$nm\t 阅读全文
posted @ 2020-08-11 16:08 Cold_Chair 阅读(384) 评论(0) 推荐(0)
摘要:https://csacademy.com/contest/archive/task/yurys-tree https://csacademy.com/submission/2761667/ 题解: kruskal重构树的$log^2$做法非常显然,这里就不讲了。 这里讲讲有根树的点分治做法。 依旧 阅读全文
posted @ 2020-08-02 22:48 Cold_Chair 阅读(318) 评论(0) 推荐(0)
摘要:在研究 http://uoj.ac/contest/37/problem/285 这题时发现了这个东西: “满足决策单调性的 DP 的通用做法” 看一道更简单的例题: 【NOI2009】诗人小G 大概就是: \(f[i]=min(f[j]+cost(j+1..i))(j<i)\) 然后满足决策单调性 阅读全文
posted @ 2020-07-24 22:15 Cold_Chair 阅读(245) 评论(0) 推荐(0)
摘要:题目大意: 给一棵$n$个点的树,选$k=1 \sim n$条不相交边,使得权值和最大。 \(n \le 2 \times 10^5\) 题解: 考虑设$f[i][j][0/1]$表示$i$子树里选了$j$条边,$i$选了没有的最大值。 猜性质,它是凸的。 那么就可以闵科夫斯基和快速合并两个这样的数 阅读全文
posted @ 2020-07-21 21:37 Cold_Chair 阅读(303) 评论(0) 推荐(0)
摘要:http://codeforces.com/gym/102331/problem/H 题解: 首先,当$k$很小时,有一经典模拟费用流做法: 每次找到最大的子区间,加上它,并把它取反,可以用线段树维护。 但这题$k$和$n$同阶,需要思考其它的做法。 还可以凸优化dp,二分斜率k后用单调队列就可以$ 阅读全文
posted @ 2020-05-28 21:36 Cold_Chair 阅读(867) 评论(2) 推荐(0)
摘要:题目大意: $1 \le l \le n \le 10^5$ 题解: 写完之后觉得我死了,这应该是我做过的最复杂的分治NTT。 设$p[i]$表示第$i$个点概率,为了表达方便,先把$p[i]$ reverse一下。 设$P(i)=p[i]·x+1 p[i]$ 考虑设$f[i]$表示从第$i$个点出 阅读全文
posted @ 2020-03-12 23:04 Cold_Chair 阅读(354) 评论(0) 推荐(2)
摘要:http://codeforces.com/problemset/problem/603/E 题解: 先思考对于一个图怎么样是合法的? 如果这个图有奇数大小的联通块,显然不行: 因为一条边会使度数和+2,度数和始终是偶数,而奇数大小联通块要求的度数和是奇数。 大胆猜测这也是充分条件。 证明的话,对于 阅读全文
posted @ 2020-03-05 20:35 Cold_Chair 阅读(258) 评论(0) 推荐(0)
摘要:题目: http://usaco.org/index.php?page=viewproblem2&cpid=793 https://gmoj.net/senior/ main/show/100130 题解: 考虑定根时怎么做? 假设在一个叶子y放了个人,那么这个人会一直往根的方向走,若根的人往y这个 阅读全文
posted @ 2020-02-24 18:42 Cold_Chair 阅读(293) 评论(0) 推荐(0)