摘要:
"Link" 我们设$f_{i,j}$表示前$i$个数中选$j$个的最大值。 那么显然有$f_{i,j}=max(f_{i 1,j},f_{i 1,j 1}+j a_i)$。 这个东西我们首先可以把它的第一维给滚掉。 然后我们知道这是个$O(n^2)$的东西,所以要考虑优化。 有一个结论是$\for 阅读全文
摘要:
$\text{Part.1}$ 基本定义 定义$1.1$ 记$M=(S,I)$表示一个定义在有限集$S$上,独立集的集合是$I$的拟阵。其中$I\subseteq2^{S}$(即$I=\{T\subseteq S|f(T)\}$)。若$M$满足下列公理,则我们称之为拟阵。 公理$1$(遗传性) $\ 阅读全文
摘要:
"题目" 我们知道,答案序列的第一个数一定是最小的度数不为$3$的点,记为$x$。 我们以$x$为根先$dfs$一遍,预处理出每个点的子树中最小的度数不为$3$的点的编号$f$。 我们知道$x$是答案的第一位,所以$x$一定在真正的二叉树的根的左下的最远处。 所以我们再从$x$开始从左下往右上$df 阅读全文
摘要:
"题目" 显然存活天数与叫外卖次数的函数是凸函数。 所以三分买外卖的次数。 然后把食品按保质期升序排序。 并且单调栈搞一下,把又贵又保质期短的丢掉。 那么随着保质期的增加,食品的价格一定上涨。 所以我们从前往后买,能买多少买对少。 c++ include define LL long long us 阅读全文
摘要:
"题目" 题目要求的顺序很像是字典序最小,不过并不是,所以不能够直接跑最小拓扑序。 不过我们可以发现这个顺序实际上就是反向图上最大拓扑序的reverse。 对于限制$u,v$,我们建$v u$这样一条边。 然后开个堆跑最大拓扑序。 判断一下是否无解,然后反向输出即可。 c++ include def 阅读全文
该文被密码保护。 阅读全文
摘要:
"题目" 维护每个点子树中最深的没有被覆盖的点(仅计算这条链上的关键点)的距离。 若$u$为关键点,则$d_u= k 1$。 记录$mx=\max\limits_{v\in son_u}d_v+1,min=\min\limits_{v\in son_u}d_v+1$。 如果$mx+mn define 阅读全文
摘要:
"题目" $n^2$的dp已经成为辣鸡做法了,%%%wch。 首先一个结论:$a+b$小的人在上。 这个东西我们有三种方法解决证明: 1、感性理解,$a+b$越大的人逃生能力越强,放在下面就越可能溜。 2、交换法。 3、找别的博客。 所以我们排个序确定顺序,然后来考虑如何计算最多能跑多少人。 然后我 阅读全文
摘要:
"题目" 凸优化选手往后稍稍。 显然我们是选择$k$对相邻的,所以我们可以差分后将题意转化为选$k$个不相邻的数使其和最小。 我们考虑一个贪心:每次选最小的。这个贪心的错误性是显然的。 我们加入一个反悔机制: 取走一个数$a$之后,我们把它旁边的两个数$b,c$去掉,在这个位置放一个新的数$b+c 阅读全文