随笔分类 -  动态规划-DP优化

摘要:题目 点这里看题目。 分析 首先不难通过容斥将问题转化为任何一个矩形都不超过 \(K\) 这样的问题。 同时注意到最终影响最大矩形的只有每一列上从底部开始连续的一段安全水域的长度,我们将第 \(i\) 列的称为 \(h_i\),则合法的条件是: \[ \forall 1\le l\le r\le n 阅读全文
posted @ 2021-05-20 17:17 crashed 阅读(91) 评论(0) 推荐(0) 编辑
摘要:题目 题目描述 对于给定参数 \(n, m, k\) ,合法的正整数序列 \(a,b\) 分别满足: \(a\) 和 \(b\) 的长度都是 \(k\); \(\sum_{i=1}^k a_i=n\) 且 \(\sum_{i=1}^k b_i=m\); 现在对于合法的 \(a\) 和 \(b\),定 阅读全文
posted @ 2020-09-04 18:08 crashed 阅读(366) 评论(0) 推荐(2) 编辑
摘要:题目 点这里看题目。 分析 显然可以数位 DP 。 当 \(R\) 的位数比较小的时候,我们可以暴力搜索出所有数字的出现情况,然后进行 DP 。 但是当 \(R\) 很长的时候,状态的范围就会非非非常大,无法 DP 。 但是注意到另一个事实是:对于一个确定的数,我们并不需要知道它长什么样子,而只需要 阅读全文
posted @ 2020-08-24 14:23 crashed 阅读(235) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 看到链的限制很奇葩, " 存在一个重要的选择 " ,于是就不难想到容斥。 首先定义 \((u_1,v_1)\cup (u_2,v_2)\) 表示求两条路径的边的并集。 显然容斥式子长这个样子: \[ \sum_{S\subset Q} (-1)^{|S|}\times 2 阅读全文
posted @ 2020-08-21 15:27 crashed 阅读(492) 评论(0) 推荐(3) 编辑
摘要:题目 点这里看题目。 分析 NOI 里面也有我会做的题目? 显然不能把 \(T\) 放到状态里面,于是考虑用活动作为状态。 \(f(u,i)\):第 \(i\) 个活动开始的时候,位于 \(u\) 城市的最大愉悦值。 转移如下: \[ f(u,i)=\max_v\{f(v,i-1)+g(v,u,t_ 阅读全文
posted @ 2020-08-21 11:44 crashed 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 本题有很多直接构造伪光滑数的做法,这些去网上搜一搜就好了。 这里讲一个很暴力但又很有意义的做法。 考虑到限制的特殊性,需要知道指数和,我们可以写出下面这个状态: \(f(i,k)\):最大质因子刚好为 \(p_i\) ,指数和为 \(k\) 的数集,此时应有 \(k\le 阅读全文
posted @ 2020-08-06 22:22 crashed 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 以下标记子串的方法为: \(S[l,r]\) 表示 \(S\) 中从 \(l\) 到 \(r\) 的字符组成的子串。用 ( 表示开区间, [ 表示闭区间。 我们不难想到一个 DP : \(f(i,k)\):以 \(i\) 开始的后缀,结尾字符串长度为 \(k\) 时的最长 阅读全文
posted @ 2020-08-04 12:02 crashed 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 出题人已经开始拿高精作为考点了吗 0pts ~ 24pts 数据太小,小到你甚至很难想到专门对付这些部分分的算法。 36pts 这应该是一个经典的问题, USACO 曾经考过类似的题目。 思想很简单,既然我们要求分出来的段单调递增,我们就把每一段的两个端点都放到状态里面。 阅读全文
posted @ 2020-07-24 18:48 crashed 阅读(275) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 感觉比往年的 NOIP 的 D2T1 更难。不过看看 D1T3 也就觉得挺合理了。 32pts 暴力搜索不多说,时间 \(O(m(m+1)^n)\) ,其中的 \(O(m)\) 用于检查。 64pts 这是考场上的思路,想了大概 10 min 不到。 针对 \(m\) 很 阅读全文
posted @ 2020-07-24 16:59 crashed 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 不难看出一个暴力 DP : \(f(u,i)\):当$u$取$i$时,$u$的子树内的方案数。 转移显然: \(f(u,i)=\prod_{v\in son(u)}\sum_{j\le i} f(v,j)\) 再设$S(u,i)=\sum_{j\le i}f(u,j)$, 阅读全文
posted @ 2020-06-15 10:54 crashed 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 首先不难想到可以枚举递增的序列,最后在答案里面乘上$n!$,于是有$O(nk)$的暴力 DP 一枚: $f(i,j)$表示长度为$i$、最大值$\le j$的序列的贡献和。 转移显然: \(f(i,j)=j\times f(i-1,j-1)+f(i,j-1)\) 那么可以 阅读全文
posted @ 2020-06-14 22:34 crashed 阅读(310) 评论(0) 推荐(1) 编辑
摘要:什么是插值 在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。 其意义在于: 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 你猜对了,以上均来自百度百科的 “ 插值 ” 词条。 怎么理解这个东西呢?举个例子 阅读全文
posted @ 2020-06-14 12:58 crashed 阅读(4493) 评论(4) 推荐(13) 编辑
摘要:题目 点这里看题目。 分析 先特判掉$K=2$的情况。 首先可以考虑到一个简单 DP : \(f(i)\):前$i$张牌的最大贡献。 转移可以$O(n^2)$地枚举区间众数,但它不存在决策单调性,众数查询也很难优化。 考虑另一种转移。我们对于$f(i)$,只取它结尾的点数的后缀 \(f(i)=\ma 阅读全文
posted @ 2020-06-06 23:44 crashed 阅读(174) 评论(0) 推荐(0) 编辑