
动态规划
文章平均质量分 81
记忆化搜索、背包 DP、区间 DP、DAG 上的 DP、树形 DP、状压 DP、数位 DP、插头 DP、计数 DP、动态 DP、概率 DP、DP 优化 、单调队列/单调栈优化、斜率优化、四边形不等式优化、状态设计优化、其它 DP 方法
zeng_jun_yv
title:
退役小曾
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
01背包+概率问题 计蒜客 offer
题目: 蒜头君很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。蒜头君没有多少钱,总共只攒了 n 万美元。他将在 m 个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且蒜头君估计了他得到这个学校 offer 的可能性 b。 不同学校之间是否得到 offer 不会互相影响。“I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可原创 2021-05-20 20:31:26 · 517 阅读 · 0 评论 -
计蒜客 逃生+动态规划
题目: 蒜头君在玩一款逃生的游戏。在一个 n×mn \times mn×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。 蒜头初始化有 v 点血量,他的血量上限是 c,任何时刻他的生命值都不能大于血量上限,如果血量为 0 则会死亡,不能继续游戏。 矩形地图上的四个角(1,1),(1,m),(n,1),(n,m) 为游戏的出口。游戏原创 2021-05-20 19:57:16 · 375 阅读 · 2 评论 -
动态规划专题
动态规划(Dynamic programming,简称 DP)通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。 严格意义上,动态规划只能用来解决最优化问题,但在 OI原创 2021-05-10 09:10:13 · 833 阅读 · 0 评论 -
最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)
马拉车算法 Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性 dp[i] = ma > i ? min(dp[2 * mod - i], ma - i) : 1; 可以这么说,这行要是理解了,那么马拉车算法基本上就没啥问题了,那么这一行代码拆开来看...原创 2019-08-16 19:08:38 · 229 阅读 · 0 评论 -
LOOPS HDU - 3853(概率dp,期望)
题意: 有一个R*C的方格。一个人想从(1,1)走到(r,c)。在每个格子都有三种选择,向下,向右,或者原地不动。每个格子里的每个选择都有一定的概率。而每次移动都需要消耗2点的能量,问期望消耗的能量是多少。 题目: Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help her friend M...原创 2020-03-26 21:13:28 · 225 阅读 · 0 评论 -
Aeroplane chess HDU - 4405(期望dp)
题意: 飞行棋。有n+1格,开始时在0号格子,每一步都要扔一个dice(六个面,概率相同) 哪一面朝上他就会向前走x+i步。当x+i大于等于N的时候,游戏结束。另外,地图上 有m条航线。第i条航线可以直接从xi到yi。计算扔dice次数的期望。 题目: Hzz loves aeroplane chess very much. The chess map contains N+1 grids lab...原创 2020-03-26 20:54:43 · 184 阅读 · 0 评论 -
Collecting Bugs POJ - 2096(基础概率dp+期望模板)
题意: 有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n。 求他找到s个系统的bug,n种bug,需要的天数的期望。~~题意很难懂··真的很难懂···~~ 题目: Ivan is fond of collecting. Unlike other people who collec...原创 2020-03-25 19:53:27 · 291 阅读 · 0 评论 -
How many ways HDU - 1978(记忆化搜索关于求多少种方式模板)
题目: 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4) 点,当他到达(2,4)点时原创 2020-09-22 08:26:32 · 180 阅读 · 0 评论 -
FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
题意:n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点。 整理模板ing… 题目: FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p <原创 2020-09-21 15:35:58 · 136 阅读 · 0 评论 -
Millenium Leapcow POJ - 2111 (千禧年跳牛)(贪心找最长路径,记忆化)
题意:给你一个矩阵,问你按照象棋马的走法,下一步比上一步的数大,问长度最长的序列是多长,然后输出序列。如果有多个最长序列输出字典序最小的那个。类似滑雪,找出最长路径,多个答案 输出字典序最小的。 思路:将矩阵上的数字从大到小排序,贪心找路径。。 The cows have revised their game of leapcow. They now play in the middle of...原创 2019-08-22 19:12:48 · 337 阅读 · 0 评论 -
Round Numbers POJ - 3252(数位dp+判断前导零)
题意 求二进制表示中0的个数大于1的数的个数。 题目 The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone’ (also known as ‘Rock, Paper, Scissors’, ‘Ro, Sham, Bo’, and a host of ot...原创 2020-02-11 17:56:01 · 571 阅读 · 0 评论 -
数位dp总结 之 从入门到模板(stO)
#转载自https://blog.csdn.net/wust_zzwh/article/details/52100392 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦! 之所以要引入数位的概念完全就...转载 2019-11-14 17:00:08 · 469 阅读 · 0 评论 -
Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)
题意: 给你n个木棍的长度和重量,让其成为上升序列,如果不能达到,就需要重新一分钟设置。 a)第一个木棍的准备时间为1分钟。 b)在处理长度为l和重量为w的棒之后,如果l <= l’并且w <= w’,则机器将不需要设置长度为l’和重量为w’的棒的设置时间。否则,将需要1分钟进行设置。 题目: There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The stic原创 2020-10-22 20:31:10 · 191 阅读 · 0 评论 -
Coins POJ - 1742(多重背包+是否装满问题)
题意: 给定n种面值的硬币面值分别为WiW_{i}Wi个数为CiC_{i}Ci,问用这些硬币可以组成1~m之间的多少面值。 题目: People in Silverland use coins.They have coins of value A1,A2,A3…An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch原创 2020-10-21 20:13:29 · 195 阅读 · 0 评论 -
Apple Catching POJ - 2385(基础的动态规划算法)
题意: 给你两个数字n和m;代表会有n个苹果掉落,m次可以移动的机会;有两棵树,开始你站在树1下面,一分钟只能移动一次,下面的数值代表在哪一颗树下会掉落苹果;问你在可移动的范围内,最多可以接到多少个苹果? 题目: It is a little known fact that cows love apples. Farmer John has two apple trees (which are conveniently numbered 1 and 2) in his field, each full of原创 2020-10-07 18:09:45 · 221 阅读 · 0 评论 -
Sumsets POJ - 2229(计数dp)
题意: 题目: Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7: 1+1+1+1+1+1+1 1+1+1+1+1+2 1+1+1+2+2 1原创 2020-10-06 19:28:33 · 226 阅读 · 0 评论 -
Cow Bowling POJ - 3176(基础的动态规划算法)
题意: 杨辉三角,让从顶部开始走到底部,所经过的每一层的点数相加,使得实现最高和。 题目: The cows don’t use actual bowling balls when they go bowling. They each take a number (in the range 0…99), though, and line up in a standard bowling-pin-like triangle like this: Then the other cows traverse th原创 2020-10-05 21:16:42 · 189 阅读 · 0 评论 -
Piggy-Bank POJ - 1384(完全背包+背包放满)
题意: 给出一个存钱罐的重量和没存钱之前存钱罐的重量,然后给出几种硬币的重量和币值,计算存钱罐里至少有多少钱。 题目: Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behind is si原创 2020-09-26 11:11:26 · 224 阅读 · 0 评论 -
Making the Grade POJ - 3666(离散化+dp)
题意: 给你n个山的高度,单独的一个数可以任意加减,让经过对每座山峰任意加减高度后变成递增或递减的序列时,求对每个数的相加或相减的数目的最小和。 题目: A straight dirt road connects two fields on FJ’s farm, but it changes elevation more than FJ would like. His cows do not mind climbing up or down a single slope, but they are not原创 2020-09-26 09:17:48 · 1044 阅读 · 0 评论 -
K-periodic Garland CodeForces - 1353E(暴力+贪心+dp)
题意: 给定长为 n 的 0, 1 字符串,你可以通过一次操作改变一个字符(0 变 1 or 1 变 0),问最少几次操作可以使任意相邻两个 1 之间的距离为 k ? 题目: You are given a garland consisting of n lamps. States of the lamps are represented by the string s of length n. The i-th character of the string si equals ‘0’ if the i-原创 2020-05-22 21:59:51 · 633 阅读 · 0 评论 -
Long Path CodeForces - 407B(动态规划+思维+公式推导)
题意: 起点为1,终点为n+1,对应第i个各点,如果我奇数次到达i点,那么下一步走到a【i】的位子,如果是偶数次到达,那么下一步走到i+1的位子。 问从1走到n+1一共需要走多少步?结果对1e9+7取模。 题目 One day, little Vasya found himself in a maze consisting of (n + 1) rooms, numbered from 1 to ...原创 2020-02-26 22:06:57 · 403 阅读 · 0 评论 -
Max Sum Plus Plus HDU - 1024(动态规划求最大M子段和)
题意: ----最大M子段和问题 给定由 n个整数(可能为负整数)组成的序列以及一个正整数 m,要求确定序列的 m个不相交子段,使这m个子段的总和达到最大,求出最大和。 题目: Now I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ours...原创 2019-12-16 20:50:47 · 547 阅读 · 0 评论 -
By Elevator or Stairs? CodeForces - 1249E(动态规划)
题意 n层楼,a[i] (0<i<n)表示从 i 楼到 i + 1 楼走楼梯的时间,b[i] (0<i<n)表示从 i 楼到 i + 1 楼乘电梯的时间,其中每一次乘电梯需要等待 k 时间,楼梯和电梯一次均可上从 x 楼上升到 y 楼 ( y != x ),即一次可以通过楼梯或电梯上升任意层数 。求从1楼到 1 ~ n 层楼所需要的最短时间 题目 You are plann...原创 2019-11-02 10:45:06 · 405 阅读 · 0 评论 -
Jin Ge Jin Qu hao UVA - 12563 (劲歌金曲)01背包,求装入的东西最多(相同多时价值大)
题目:白书p274 题意: KTV里面有n首歌曲你可以选择,每首歌曲的时长都给出了. 对于每首歌曲,你最多只能唱1遍. 现在给你一个时间限制t (t<=10^9) , 问你在最多t-1秒的时间内可以唱多少首歌曲num , 且最长唱歌时间是多少time (time必须<=t-1) ? 最终输出num+1 和 time+678 即可. 注意: 你需要优先让歌曲数目最大的情况下,再去选...原创 2019-08-22 18:05:58 · 384 阅读 · 0 评论 -
Not so Mobile(二叉树递归输入同时建树){天平}
题意:给出一个大天平,大天平中还有许多小天平,求出所有的天平是否平衡;平衡条件为wldl = wrdr; Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspending colourfull things. This kind of ...原创 2019-08-08 11:29:10 · 203 阅读 · 0 评论 -
Eight HDU - 1043(八数码+搜索)
题意: 就是还原八数码。输出操作。 题目: The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to...原创 2019-07-21 16:41:15 · 288 阅读 · 0 评论 -
Tree Cutting POJ - 2378(树形DP)
题意:有n个谷仓有n-1条路连接,问最少删除哪几个点才能使得删除点后得到的连通图的加点数不大于n/2. 分析:求树的重心的变形题,poj3107的简单版,一遍dfs从叶子到根转移找出找到以每个节点为根的子树的结点数,f[u]={ f[v1]+f[v2]+.....+f[vn] }+1;使得每棵子树节点数小于n/2,并且父节点得那个连通图节点数小于等于n/2,即n-f[u]<=n/2. 如...原创 2019-07-21 17:02:16 · 158 阅读 · 0 评论 -
Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
题目大意:将n节木棒接成m个长度相等的木条,要求木条的长度尽可能的短 Time limit 3000 ms OS Linux George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to ret...原创 2019-07-21 17:18:48 · 157 阅读 · 0 评论 -
Pearls POJ - 1260(区间记忆化搜索)
题意: n件物品,给出数量和价格,(注意数量和价格都是升序给出的这个是能DP的关键),要买掉所以商品 对于每类物品,所需要的价格是(a[i]+10)*p[i] ,即要多买10件,也可以把价格低的物品合并到高价格的物品那 即 (a[j]+a[i]+10)*p[j];代表把价格为i的物品合并到j上。设dp[i]为买完第i类物品的最优解 dp[i]=min(dp[i],dp[j]+(a[j+1...原创 2019-07-21 17:36:00 · 149 阅读 · 0 评论 -
A Mini Locomotive POJ - 1976(动态规划+思维)
题意:有三个火车头,n个车厢,每个车厢里面对应的有一定的人数。规定每个火车头最多 拉m个连续的车厢而且他们拉的车厢一定是从左到右连续的,问它能够拉的最多的人数; 思路:类似01背包的解法,首先每个火车最多拉m个连续的车厢,这里我们把只要存在 连续的m个车厢的就看成一个物品。相当于往背包容量为3的背包里面放物品所得的最 大价值量。但是这里注意每连续的m个车厢为一个物品, f[i][j] = max...原创 2019-07-28 15:50:29 · 313 阅读 · 0 评论 -
FATE HDU - 2159(二维完全背包)
限制条件: 1.忍耐度 m 2.杀怪个数 s 构造: dp[m][s] 得到的经验值 Time limit 1000 ms Memory limit 32768 kB OS Windows Source 2008信息工程学院集训队——选拔赛 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之...原创 2019-07-28 16:30:48 · 154 阅读 · 0 评论 -
Cheapest Palindrome POJ - 3280(动态规划*)
题意: 给出一个字符串,要求将其修改成一个回文字符串,给出修改某种字母(添加或删除)的价值,求最小使其成为回文字符串的价值。题解: 感觉是求最长回文子序列的变形,然而刚开始想着用类似于求最长回文子序列的方法,将字符串反转后与原字符串匹配最长公共子序列,在匹配的过程中来进行dp转移,但发现这样不行,因此还是借鉴了网上的方法用dp[i][j]表示处理完区间将i~j之间的字符串变为回文字符串的最小...原创 2019-07-28 16:35:09 · 142 阅读 · 0 评论 -
Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)
题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式。 解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值。与记录有多少种路径的走法一样,但要注意的是 这里输出的数据会很大,会超出long long型,所以用两个 long long 型来表示一个大数。分别是高位和低位,低位不 超过10^18,也就是有17位数。 Tim...原创 2019-07-28 15:35:18 · 216 阅读 · 0 评论 -
Largest Rectangle in a Histogram (动态规划+奇思妙想单调栈)求最大矩状图面积
感觉动态规划都是玄妙的很,思维题吧(单调栈思维) 题解:让求最大矩形面积,宽为1,暴力超时 可以发现 当第i-1个比第i个高的时候 比第i-1个高的所有也一定比第i个高 于是可以用到动态规划的思想 令left[i]表示包括i在内比i高的连续序列中最左边一个的编号 right[i]为最右边一个的编号 那么有 当h[left[i]-1]>=h[i]]时 le...原创 2019-08-06 10:58:35 · 382 阅读 · 0 评论