摘要: 我这个贪心做过$2$遍了,但是不太记得了。 这个问题:有一颗树。 你需要求出一个答案排列。 权值和这个排列有关。 要求一个点必须在它的父亲后面。 求最优的排列。 维护一个并查集。 考虑我们把两个操作序列合并。 操作序列的最优顺序是个全序关系。 我们维护一个堆,每次取出最优的块,把它和父亲的块合并,表 阅读全文
posted @ 2020-11-05 16:04 celerity1 阅读(80) 评论(0) 推荐(0)
摘要: 题目的限制等于从$p$个队列,每个队列里有$n$个数。 每次可以取出一个非空的队列的头部,询问方案数。 如果$p$较小,设$(s_1,s_2...s_p)$表示第$i$个队列取到$s_i$的方案数。 题目要求不能取连续相同的$p$个数。这等于在空间上有一些点不能走。 把这个问题放在$p$维空间上。 阅读全文
posted @ 2020-11-05 07:45 celerity1 阅读(81) 评论(0) 推荐(0)
摘要: 在一些概率题目中,我们需要构造势函数。 这个势函数$f(x)\(要使得对于一个状态的所有后继状态,概率的平均值减去现在的状态\)=-1$。 根据鞅的停时定理,可以得到答案就是开始状态-终止状态的势能函数。 以cf1025g为例。 例题: 模拟赛 战争 cf1349d cf1025g cf850f 阅读全文
posted @ 2020-10-30 09:54 celerity1 阅读(505) 评论(0) 推荐(0)
摘要: 一键挖矿 https://www.cnblogs.com/ctmlpfs/p/13858405.html #include<bits/stdc++.h> using namespace std; #define N 2000010 #define int long long #define f(x) 阅读全文
posted @ 2020-10-22 15:31 celerity1 阅读(168) 评论(0) 推荐(0)
摘要: 如果做了这道题,有可能做出ioi2018 排座位 在一维时,问题就是询问$\max(l...r)-\min(l...r)=r-l$的段数。 这是个经典的问题。 从$1\to n$进行扫描线。设当前扫到$i$维护两个单调递减/递增栈和两个线段树。 第一个线段树的$j$位置表示$\max(j...i)- 阅读全文
posted @ 2020-10-22 15:11 celerity1 阅读(267) 评论(0) 推荐(0)
摘要: 算法1: 考虑没有插入操作怎么办。 先考虑sub3。 定义一个点在边界上:它的右上角没有任何点。 注意到无论怎么进行操作,在边界的点还是会在边界,且顺序不会交换。 所以可以用线段树二分简单维护。 再考虑sub4。 sub4和sub3的区别:在sub3中每个点都在边界上,但是sub4并不。 但是注意到 阅读全文
posted @ 2020-10-22 14:59 celerity1 阅读(173) 评论(0) 推荐(0)
摘要: 根据套路考虑二分答案。但是值域十分大,不能直接二分。 设$val(l,r)\(表示\)(l,r)$这条路径的权值,$va(x)$表示$x$这条路径的权值。 幸运的是,由于路径的条数只有$n2$个,可以随机二分。 维护两条路径$a,b$表示现在随机二分的上/下界。 每次我们需要随机到一条路径满足$va 阅读全文
posted @ 2020-10-22 12:01 celerity1 阅读(233) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2020-10-21 10:46 celerity1 阅读(2) 评论(0) 推荐(0)
摘要: 先考虑$O(n^2)$的做法。 考虑一个在叶子的农民怎么抓住B。显然农民会向B走。 由于每一个节点B都可能走,如果一些农民向一个点x走,则要满足B到x的距离<农民到x的距离,这样子才能成功逃走。 把B定为根,发现如果一个节点被农民走,则它的子节点就不用被走了。 设$f_i$表示所有叶子节点到i的最短 阅读全文
posted @ 2020-10-20 08:05 celerity1 阅读(107) 评论(0) 推荐(0)
摘要: 不那么套路的点分题。 首先根据题意容易得到一个$O(n^2)$的做法。 显然我们对于一个解,它的最优答案是内部的色数。 一个解合法的条件是它的外部不包含这个解内部的颜色。 那么我们可以暴力模拟这个过程。强制钦定一种颜色被选择,然后把这种颜色包含的所有点都加入解中,重复此过程直到解合法。 遍历一个颜色 阅读全文
posted @ 2020-10-17 15:49 celerity1 阅读(66) 评论(0) 推荐(0)