ACM——动态规划
文章平均质量分 79
微风袭来
这个作者很懒,什么都没留下…
展开
-
数位DP总结(含有例题)
数位DP说实话数位DP我曾经刷过,但也只是复制粘贴地刷过,没有真正理解,今年暑假的牛客多校中,我们队就碰见了这样一道题,我看见题就脱口而出“数位DP”算法的名字,可惜,然后就没后续,知道它能够解决什么样的问题做什么用其实并没有多大用,只有真正理解算法的核心才能够用在解决问题上初见SCOI2009 windy 数这道可以说是数位DP的模板题区间内相邻两个数位之差至少为 2 的正整数的个数既没有繁杂的限制条件,要求也很简单就是个数,可以说这就是数位DP的本来模样核心代码段ll dfs(int原创 2020-10-13 19:18:08 · 340 阅读 · 0 评论 -
[ZJOI2010]基站选址(DP+线段树)
题目洛谷P2605题解听说是非常经典的DP+线段树题,就来瞻仰一下,果然思维难度还是不小的这道题也让我对线段树有了更深的了解,不仅是明面上是区间修改的需要用到线段树,甚至像DP这种算法,当算法时间复杂度太高的时候,可以用线段树来处理DP的数据,达到简化DP的目的这道题的递推公式:f[i]=min{f[i-1]+w[i-1][j]}+c[i]f[i]为假如第i个点造基站的最小费用,w[x...原创 2020-04-23 17:17:07 · 482 阅读 · 0 评论 -
51nod 1657 电子龟
题目给出一串在水平方向上移动的指令,向后转或者朝面对方向前进一格,可以进行两种指令的替换,给出指令序列和替换次数,问最远走的距离题解动态规划,三重循环,dp[i][j][0] 或者 dp[i][j][1]表示到达第 i 个字母进行 j 次替换向0或者1方向所能走出的最远距离考虑到一共只有两种情况:向前进的命令被替换偶数次或者掉头的命令被替换奇数次,结果还是前进向前进的命令被替换奇数...原创 2019-11-27 23:10:49 · 122 阅读 · 0 评论 -
补充
补充补充一些自己漏掉的算法,感觉算法题如果一个月没做就几乎全忘光了,不知道是我记性差还是怎么的,所以特以此文祭奠一下我遗忘的但曾经掌握的算法最长公共子序列(LCS)一图说明全部(动态规划真的无敌)最长递增(递减)子序列将原序列sort出一个新的递增(递减)序列,与原序列做LCS...原创 2019-09-08 20:23:38 · 92 阅读 · 0 评论 -
HDU1520(链式前向星+树形DP)
题目同洛谷经典树形DP例题 没有上司的舞会,简单来说,就是建树形图,父子节点最多取其一,取父节点就不能取子节点,取子节点就不能取父节点树形DP的模板题题解直接给出动态规划方程:f[father][0]+=max(f[son][0],f[son][1])f[father][1]+=f[son][0]很好理解,0代表不取,1,代表取,同经典背包问题,取了父节点自然只能不取子节点,不取...原创 2019-06-10 19:50:54 · 354 阅读 · 0 评论 -
P2051(动态规划)
题目这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好 有一个棋子。你也来和小可可一起锻炼一下思维吧!题解基本思想就是放置其实与棋局所放置的形状无关,直接对每一行进行讨论就行了(我...原创 2019-05-21 23:39:45 · 229 阅读 · 0 评论 -
POJ2229(完全背包 or递推)
题目POJ2229新学期开始了,刷题生活又开始了,先从这种半水题开始找感觉其实是玩了一个寒假,什么都忘了算法1.完全背包相信对熟记“背包九讲”的童鞋们都不成问题了,这是一道裸的完全背包问题2.因为这道题本身题目的特殊性,可以有更加简单高效的解法,只是理解上稍微有一点难度,完整的证明我也是看的别的大神的,递推解法的完整证明题解1完全背包#include<iostream&...原创 2019-03-01 20:47:56 · 374 阅读 · 0 评论 -
POJ1631(最长递增子序列)
题目题目原文极其复杂(对于我这种小学英语水平的人来说太难了,连查几个单词还是没读懂),题目意思实际极其简单,就是给出一组数求最长递增子序列,水题一道题解真的太过简单了,就不写解释了,一遍AC#include<iostream>#include<algorithm>using namespace std;int a[40005];int main(){&n...原创 2018-12-24 15:51:14 · 136 阅读 · 0 评论 -
HDU1051(最长递增子序列)
题目题目大意是给出一组二维数据,求问其中可以最少分成几个二维递增的子序列分析乍看起来是二维的递增子序列问题,更加地复杂,但实际上可以用sort函数先进行排序,数据的一项已经呈递增的状态,只需再考虑第二项就行,简单来说这道题就是对排序后的数据反复求最大递增子序列算法由于题目数据较小,我就用了比较暴力的算法,应该有更好的解,但对这道题来说,尝试将每一个数往已有的子序列末尾添不行则新开一列...原创 2018-12-24 15:13:42 · 357 阅读 · 0 评论 -
POJ3046(简单DP+滚动数组)
题目poj3046大意是T种数,每种数有一定的数量,用这些数组成S到B的长度的集合,问有几种方法(具体意思看原题吧,我自己一开始读了好几遍都没弄懂)千万别看漏了只需要6位这个输出要求,我WA了好几次才发现算法这道题看起来很像有限背包问题,用简单的DP算法就能解决。当然,由于这类题目第i-1个以前的数均无后效性,可以开2个一维数组组成的二维数组,使用滚动数组的思想,可以极大地降低空间复杂...原创 2018-12-20 16:59:11 · 405 阅读 · 0 评论