随笔分类 -  dp

摘要:Yet Another Minimization Problem dp方程我们很容易能得出, f[ i ] = min(g[ j ] + w( j + 1, i ))。 然后感觉就根本不能优化。 然后就滚去学决策单调啦。 然后就是个裸题, 分治一下就好啦, 注意用分治找决策点需要的条件是我们找出被决 阅读全文
posted @ 2019-03-10 21:47 NotNight 阅读(165) 评论(0) 推荐(0)
摘要:Fafa and Ancient Mathematics 转换成树上问题dp一下。 阅读全文
posted @ 2019-03-09 17:57 NotNight 阅读(135) 评论(0) 推荐(0)
摘要:Elevator 怎么今天写啥题都不会写啊, 我是傻了吗。。 把电梯里面四个人的目标点当作状态, 然后暴力转移。 阅读全文
posted @ 2019-03-07 20:43 NotNight 阅读(173) 评论(0) 推荐(0)
摘要:Fence Divercity 我们设a[ i ] 为第 i 个围栏被切的最靠下的位置, 我们发现a[ i ] 的最大取值有一下信息: 如果从i - 1过来并在 i 结束a[ i ] = min(h[ i - 1], h[ i ]) 如果从i - 1过来并延续到i + 1, a[ i ] = min 阅读全文
posted @ 2019-03-05 22:29 NotNight 阅读(147) 评论(0) 推荐(0)
摘要:Levels and Regions 把dp方程列出来, 把所有东西拆成前缀的形式, 就能看出可以斜率优化啦。 阅读全文
posted @ 2019-03-05 01:25 NotNight 阅读(248) 评论(0) 推荐(0)
摘要:Treeland Tour 离散化之后, 每个节点维护上升链和下降链, 感觉复杂度有点高, 为啥跑这么快。。 阅读全文
posted @ 2019-03-03 15:59 NotNight 阅读(136) 评论(0) 推荐(0)
摘要:Name That Tune 刚开始我用前缀积优化dp, 精度炸炸的。 我们可以用f[ i ][ j ] 来推出f[ i ][ j + 1 ], 记得加加减减仔细一些。。。 阅读全文
posted @ 2019-03-01 20:44 NotNight 阅读(251) 评论(0) 推荐(0)
摘要:Karen and Supermarket 感觉就是很普通的树形dp。 dp[ i ][ 0 ][ u ]表示在 i 这棵子树中选择 u 个且 i 不用优惠券的最小花费。 dp[ i ][ 1 ][ u ]表示在 i 这棵子树中选择 u 个且 i 用优惠券的最小花费。 注意这个转移总的合起来是O(n 阅读全文
posted @ 2019-02-28 15:17 NotNight 阅读(121) 评论(0) 推荐(0)
摘要:The Great Mixing 化简一下公式后发现, 问题变成了, 取最少多少数能使其和为1, bitset优化一下背包就好啦。 题解中介绍了一种bfs的方法没, 感觉比较巧妙。 阅读全文
posted @ 2019-02-27 12:05 NotNight 阅读(181) 评论(0) 推荐(0)
摘要:首先我们能注意到两个数x, y (0 < x , y < m) 乘以倍数互相可达当且仅当gcd(x, m) == gcd(y, m) 然后我们可以发现我们让gcd(x, m)从1开始出发走向它的倍数一个一个往里加元素就好啦, 往那边走 这个可以用dp求出来, dp[ i ] 表示 gcd(x, m) 阅读全文
posted @ 2019-02-23 21:25 NotNight 阅读(344) 评论(0) 推荐(0)
摘要:Kleofáš and the n-thlon 我们可以用dp算出比当前这个人得分少的概率, 然后人数乘概率就好啦。 dp[ i ][ j ]表示进行了 i 轮 得分为 j 的概率, 因为每个人都是独立地这样算是可以的, 然后前缀和优化一下。 阅读全文
posted @ 2019-02-21 13:50 NotNight 阅读(250) 评论(0) 推荐(0)
摘要:Cats Transport 出发时间居然能是负的,我服了。。。 卡了我十几次, 我一直以为斜率优化写搓了。 我们能得出dp方程式 dp[ i ][ j ] = min(dp[ k ][ j - 1 ] + hs[ i ] * (cnt[ i ] - cnt[ j ]) - sum[ i ] + s 阅读全文
posted @ 2019-02-20 22:12 NotNight 阅读(197) 评论(0) 推荐(0)
摘要:Arthur and Brackets 区间dp, dp[ i ][ j ]表示第 i 个括号到第 j 个括号之间的所有括号能不能形成一个合法方案。 然后dp就完事了。 阅读全文
posted @ 2019-02-17 16:16 NotNight 阅读(103) 评论(0) 推荐(0)
摘要:Array GCD 最后的序列里肯定有a[1], a[1]-1, a[1]+1, a[n], a[n]-1, a[n]+1中的一个,枚举质因子, dp去check 阅读全文
posted @ 2019-02-11 17:09 NotNight 阅读(145) 评论(0) 推荐(0)
摘要:55D - Beautiful numbers 把lcm离散化一下就能过了。 阅读全文
posted @ 2019-02-08 14:35 NotNight 阅读(110) 评论(0) 推荐(0)
摘要:D - Jzzhu and Numbers 这个容斥没想出来。。。 我好菜啊。。 f[ S ] 表示若干个数 & 的值 & S == S得 方案数, 然后用这个去容斥。 求f[ S ] 需要用SOSdp 阅读全文
posted @ 2019-02-08 13:37 NotNight 阅读(129) 评论(0) 推荐(0)
摘要:C - Kalila and Dimna in the Logging Industry 很容易能得到状态转移方程 dp[ i ] = min( dp[ j ] + b[ j ] * a[ i ] ), 然后斜率优化一下。 一直以为炸精度了, 忽然发现手贱把while 写成了if 。。。。 阅读全文
posted @ 2019-02-03 22:55 NotNight 阅读(142) 评论(0) 推荐(0)
摘要:F - Cookies 思路:我们先考虑如何算出在每个节点结束最多能吃多少饼干, 这个dfs的时候用线段树维护一下就好了, 然后有个这个信息之后树上小dp一下就好啦。 阅读全文
posted @ 2019-01-07 15:01 NotNight 阅读(219) 评论(0) 推荐(0)
摘要:B - Enlarging Enthusiasm 感觉做到过好多的dp题都会和单调性结合在一起。 思路:dp[ s ][ pre ][ res ] 表示的是已选择了s,上一个是pre, 还有res 的分数的方案数。 然后再枚举下一个位置的时候,把其他位置的也减去这个值,因为是单调递增的所以不会多减, 阅读全文
posted @ 2019-01-07 00:30 NotNight 阅读(302) 评论(0) 推荐(0)
摘要:#include #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair #define PLI pair #define PII pair #define SZ(x) ((int)x.size()) #define ull unsigned long long u... 阅读全文
posted @ 2018-12-30 19:33 NotNight 阅读(336) 评论(0) 推荐(0)