随笔分类 -  动态规划

摘要:购买第i件物品可以获得t[i]+1件物品,转化为01背包问题 点击查看代码 #include<bits/stdc++.h> #define int long long #define inf 1e18 #define inc 0xcfcfcfcf #define N 4007 #define M 5 阅读全文
posted @ 2023-03-22 15:01 模拟退火 阅读(24) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 真毒瘤 这个题目耗了我半天。。结果是线段树打错了。。。 回归正题:线段树+dp 首先当然是先考虑朴素dp啦,相信你既然都来做这题了,朴素的方程自然不用我多说,设f[i][j]表示在前i个村庄内,第j个基站建在i处的最小费用(不考虑i~n的赔偿费用等) 方 阅读全文
posted @ 2019-01-14 19:49 模拟退火 阅读(282) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 状压+构造矩阵 首先,题目中要求对于每个数x,不能选出2x,3x,我们可以构造出一个矩阵,如下: $\begin{matrix}x & 3x & 9x & 27x & ...\\2x & 6x & 18x & 54x & ...\\4x & 12x & 36x & 108x 阅读全文
posted @ 2019-01-14 10:16 模拟退火 阅读(124) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划: 首先,仔细看题目明确一点,如果要拔高,无论怎么拔,拔高的区间右端点一定是n,为什么呢? 这样做: 1对于区间左边,不会减小以前的最优决策 2对于区间内,两两之间相对高度不会发生变化 3对于区间右边,会减小它们进入最优序列的可能性 所以操作区间在右端点就 阅读全文
posted @ 2019-01-13 19:57 模拟退火 阅读(100) 评论(0) 推荐(0) 编辑
摘要:双倍经验(美滋滋~~): (1) (2) 回归正题: 本蒟蒻用的方法:动态规划+斜率优化+单调队列 其实这种斜率优化的题目大都差不多吧,这里主要讲本题的突破口: 对于每两块土地x,y来说,当l[x]>l[y]并且h[x]>h[y]时,我们可以得到第y块土地是没有价值的,因为如 阅读全文
posted @ 2019-01-13 19:44 模拟退火 阅读(99) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划+线段树 题目链接(洛谷) 首先,先要明确一点,当我们填了第i位时,自然下一位的符号也就出来了 那么我们可以分情况讨论: 1当下一位是>时:我们可以建一棵权值线段树,维护区间最大值,查询时在[1,val[i]1]中查询最大值来转移 2当下一位是$= 阅读全文
posted @ 2019-01-13 19:19 模拟退火 阅读(153) 评论(0) 推荐(1) 编辑
摘要:洛谷题目链接 动态规划+容斥原理: 1、暴力状压 我们尝试设计状态:f[i][j][S] 表示新的图上点i对应旧的图上点j并且所有点的状态为一个二进制数S时的方案数 那么只需要暴力树形dp就行了 但是这样做为什么说是暴力呢。。。一看就知道,复杂度爆炸,然而我并不会证$qw 阅读全文
posted @ 2019-01-11 11:54 模拟退火 阅读(138) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划: 这个题目真的看题解看了好久!!!最后还是某大佬讲了才懂。。感觉题解的解释有点错误,也可能是我太弱了。 我们设计状态 g[i][j]表示当前在i节点,处理到了第k棵子树时,还能向外扩展j层的最小花费。 f[i][j]表示当前在i节点,处理到了第k阅读全文
posted @ 2019-01-10 21:43 模拟退火 阅读(263) 评论(0) 推荐(1) 编辑
摘要:洛谷题目链接 动态规划: 这里用一种我想不到的思想,我们以美食来转移,设计状态f[i][S](S{03})其中S0时表示第i个食物没有被人选,1表示被左边的人选了,2表示被右边的人选了,3表示被两个人同时选中 状态转移有点多,但是挺简单,不多赘述 接下 阅读全文
posted @ 2019-01-10 18:13 模拟退火 阅读(141) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划: 这个题目调了我好久。。。。结果循环变量写错了。。。 而且题目有个坑!!!只能用开始给你的v元买入东西 回归正题: 我们定义状态ans[i][j]表示第i个物品用了至多j次魔法的最小花费,但是我们发现这样子的话不好与合成关系联系在一起,那么我们再定义一个数组$ 阅读全文
posted @ 2019-01-10 12:31 模拟退火 阅读(154) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 数位dp 我们对n进行二进制拆分,于是就阔以像十进制一样数位dp了,基本就是套模板。。 接下来是美滋滋的代码时间~~~ 阅读全文
posted @ 2019-01-07 21:08 模拟退火 阅读(108) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 数位dp 这里我们首先考虑一种做法,就是记录f[pos][sum][num]表示当前是第pos位,总的数字和为sum,现在的数字是num,那么我们看看下面一行小字,输入的数位数小于等于1000,????一脸懵逼,开个么大的f数组?? 于是我们优化一下,我们枚 阅读全文
posted @ 2019-01-07 19:59 模拟退火 阅读(162) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 真毒瘤。。 这个题目真的耗了我半小时!其实现在想起来还好,思路应该不难想,这里提供一种思路,一开始看这题想着不好判断回文,既然回文不好判断,那就判断不回文呗,正难则反嘛~~~我们要知道,对于一个不是回文串的串,每个字符与前面一个字符和前面第二个字符不相同,因此我们记录两个值$last1 阅读全文
posted @ 2019-01-07 19:07 模拟退火 阅读(110) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 数位dp: 我们设法求出对于每个数x,求出0~x的满足题意的方案数记为sum[x],那么本题的答案自然是sum[y]sum[x1] 那么怎么求出方案数呢? 我们可以枚举支点位置,求出力矩和,满足条件就返回值,并且记录值(记忆化搜索),注意最后要考虑0的情 阅读全文
posted @ 2019-01-07 10:28 模拟退火 阅读(135) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 很明显而简单的树形dp: 设以节点v为根时的深度和 我们可以先处理出以1为根的深度和f[1],那么我们怎么样才能不dfsn次来求出以其他点为根的深度和呢 我们考虑现在节点为u,子节点为v,那么当v为根的时候,f[v]=f[u]+n2siz[v] 阅读全文
posted @ 2019-01-06 20:14 模拟退火 阅读(193) 评论(0) 推荐(0) 编辑
摘要:动态规划! 双倍经验(1) 双倍经验(2) 这题是决策单调性dp,我们把式子变形一下: pi=maxj=1n{valj+|ij|}ai 看这绝对值很不爽,我们可以正着扫一遍,再把序列翻转扫一遍,就解决了绝对值问题了 我们只讨论前一部 阅读全文
posted @ 2019-01-05 10:55 模拟退火 阅读(306) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 纪念自己推出了第一道斜率优化! 变量声明: sum[i]表示前i棵树的总重 dis[i]表示从开头到第i棵树的距离 pay[i]表示在第i处设立厂,花费是多少,只考虑i之前的 f[i]表示在第i处设立第二个厂的总最小花费 那么假设第一个厂建在j阅读全文
posted @ 2019-01-04 10:45 模拟退火 阅读(152) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划+单调队列+斜率优化 身为dp蒟蒻的我,准备学斜率优化和单调队列,自然不能放过这个经典题目了,我们对于这题很容易想出一个暴力式子: (sum[i]为前缀和) f[i]=min(f[i],f[j]+(sum[i]sum[j]+ijL1)2) 我们不考 阅读全文
posted @ 2019-01-03 21:16 模拟退火 阅读(152) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划: 我们设计状态f[i][j]表示第i时刻,能力值为j能滑雪的最多次数 预处理出: a[i][j]表示以i这个时刻结束,能力值为j时最晚的滑雪课开始时间 les[i]表示至少需要能力为i的最短滑雪时间 g[i]表示i时刻能滑雪的最多次数 阅读全文
posted @ 2019-01-02 22:08 模拟退火 阅读(201) 评论(0) 推荐(0) 编辑
摘要:洛谷题目链接 动态规划(真毒瘤!) 变量声明: val[i]:表示第i块颜色 num[i]:表示第i块颜色数量 sum[i]:表示num的前缀和 我们设计状态f[l][r][k]表示区间(l,r)中,后面还有k个与val[r]相同的数字 那么初始化如下: $f 阅读全文
posted @ 2019-01-02 10:42 模拟退火 阅读(145) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示