摘要: 题解 可以想一下保留一个长度为k的不降序列方案数是$f[k] (n k)!$ $f[k]$是有多少个长度为k的不降序列 我们去掉不合法的,一定是前一次操作的时候有一个长度为$k + 1$的不降序列,于是长度恰好为$k$的方案数就是 $f "k" ! f "k + 1" !(k + 1)$ $f[k] 阅读全文
posted @ 2018-12-12 17:46 sigongzi 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题解 区间dp,先离散化所有价值 $f[i][j][k]$表示$[i,j]$区间里最小值为$k$的价值最大是多少 只考虑$i =k] + cost(k) + f[h + 1][j][ =k])$ 构造答案的时候通过记录每个点前一个转移点来递归即可 代码 cpp include define fi f 阅读全文
posted @ 2018-12-12 14:21 sigongzi 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 题解 $f(n)$的取值范围最多$9^2 18$ 直接枚举判断就好 代码 cpp include define fi first define se second define pii pair define pdi pair define mp make_pair define pb push_b 阅读全文
posted @ 2018-12-12 11:11 sigongzi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题解 和BZOJ4025挺像的 就是维护边权是时间的最大生成树 删边直接删 两点未联通时直接相连,两点联通则找两点间边权小的一条边删除即可 代码 cpp include define fi first define se second define pii pair define pdi pair 阅读全文
posted @ 2018-12-12 09:58 sigongzi 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 题解 lct维护一个结束时间作为边权的最大生成树,每次出现奇环就找其中权值最小的那条边,删掉的同时还要把它标记上,直到这条边消失 如果有标记则输出No 边权通过建立虚点来维护 代码 cpp include define fi first define se second define pii pai 阅读全文
posted @ 2018-12-12 09:31 sigongzi 阅读(332) 评论(0) 推荐(0) 编辑