随笔分类 -  动态规划

摘要:考察一个合法的棋盘,有一些列上有车,其他的列没有车。 有车的列所有格子都被覆盖,没有车的列上的每个格子都需要被同一行的车覆盖。 即考察所有极长的行连续段,如果这个连续段涉及的列里包含没有车的列,那么这个行连续段里必须有车。 考虑枚举有车的列的集合 \(S\),对于每个行连续段,记它涉及的列集合与 \ 阅读全文
posted @ 2024-04-26 18:14 JCY_std 阅读(69) 评论(0) 推荐(0)
摘要:题解 建出原图的圆方树。由于原图无重边,不妨把桥看作二元环建树,这样圆点只与方点直接相连。 圆方树定某一圆点为根后,若点 \(u\) 是圆点,定义点 \(u\) 的子仙人掌为点 \(u\) 子树中的圆点在原图的导出子图,定义该子仙人掌的根为点 \(u\);若点 \(u\) 是方点,定义点 \(u\) 阅读全文
posted @ 2023-11-28 14:37 JCY_std 阅读(116) 评论(0) 推荐(0)
摘要:题目描述 你需要计算一个函数 \(F(x, y)\),其中 \(x, y\) 是两个正整数序列。 bool F(std::vector<int> x, std::vector<int> y) { if (W(x).size() != W(y).size()) return false; if (W( 阅读全文
posted @ 2023-11-07 17:39 JCY_std 阅读(76) 评论(0) 推荐(0)
摘要:不难发现最优方案一定是把序列划成若干段,从左到右依次每段走过去再走回来。 首先遍历 $i$ 从 $2$ 到 $n$,令 $t_i = max(t_i, t_{i - 1} + 1)$,为的是使最早出发时间满足间隔至少一秒。 不难列出 dp 方程 $dp_i = \min_{1 \le j < i} 阅读全文
posted @ 2022-12-15 20:06 JCY_std 阅读(54) 评论(0) 推荐(0)
摘要:非常简单数位 dp。 先差分转成前缀询问,然后记录状态 $dp_{p, num, hv, pre}$ 表示当前考虑到第 $p$ 位,还剩 $num$ 次改变定义的机会,$hv$ 表示这一位是否考虑大小限制,$pre$ 表示上一位的定义是否和现实左右一样。 #include <bits/stdc++. 阅读全文
posted @ 2022-10-09 15:16 JCY_std 阅读(233) 评论(0) 推荐(0)