随笔分类 -  动态规划 —— 动态规划

摘要:显然直接 $01$ 背包会超时并且超空间 套路:分层 $DP$ 「考虑将每个子结构看作一层(也就是包含了不止 $1$ 个物品的信息),并且大层不会对小层造成影响,可以考虑先进行每一层的自我更新(即用当前层物品更新当前层答案),再进行层的合并,此时考虑低层对高层的影响」 正题 那么这题有一个特殊性质: 阅读全文
posted @ 2019-01-21 12:14 Colythme 阅读(194) 评论(0) 推荐(0)
摘要:· 题意 对于一个DAG,在图中任意添加一条边,求可形成的树形图个数。 · 题解 首先对于一个DAG,它们可形成的树形图的个数显然是各点入度相乘。 那么现在加入了一条边,可能会构成环,于是可以用总方案数减去不合法方案数(即构成环的方案数)。 本题解题的关键在于如何构造不合法方案,那么y -> x的所 阅读全文
posted @ 2018-09-27 10:53 Colythme 阅读(109) 评论(0) 推荐(0)
摘要:题意: 给定两个序列$a$和$b$,让它们进行匹配,求出使得$a_i > b_j$的个数比$a_i < b_j$的个数恰好多$k$,求这样的匹配方法数 题解: 这题的各种表示有一点相似又截然不同,很容易混淆。 直接求恰好满足$k$对不好求,所以先放宽条件,这样子有利于构造动规方程。 先用$f_{i, 阅读全文
posted @ 2018-09-25 07:58 Colythme 阅读(160) 评论(0) 推荐(0)
摘要:· 假设此时已求出标准完全背包,用$f[j]$表示。 · 本题关键在于,由于有个数限制,那么可以强制令当前状态不满足限制,即若最多取$Have[i]$个,强制令其先取$Have[i] + 1$个,那么减去$f[S - (Have[i] + 1)]$即可,当然需用容斥原理来进行加减。 · 代码: 1 阅读全文
posted @ 2018-09-24 20:30 Colythme 阅读(96) 评论(0) 推荐(0)