dp
D.Fu
试问岭南应不好,却道此心安处是吾乡
展开
-
最长公共子序列问题模板 hdu ——1159 dp入门系列
题意就不在赘述方法其实就是最长公共子序列模板求解代码:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int dp[1000][1000];/...原创 2018-08-09 21:12:10 · 162 阅读 · 0 评论 -
hdu2089 【数位dp】
题目大意就是问在一个给定的区间里的数不包含62,和4的数有多少个?思路:数位dp一般是用来解决在排列中删去一些不符合要求的数后的个数,所以这道题很明显是数位dp代码:#include<cstdio>#include<iostream>using namespace std;int dp[20][20];//dp[I][j]表示长度位I,最高位位j时的满...原创 2018-09-20 20:36:32 · 92 阅读 · 0 评论 -
焦作网络预选赛K题-多重背包
题目大意就是给你n种船,每种船的数量和运载能力,问s吨货物可以有多少种运输方式?题意很明显就是多重背包,甚至还有点像硬币那道题HDU1284,所以顺着那道题的思路来就行了,在那道题中,是这种方法做出来的,其中i代表硬币的价值,j代表着总价值。void solve(){ dp[0]=1; for(int i=1;i<=3;i++) { for...原创 2018-09-28 18:59:30 · 121 阅读 · 0 评论 -
hdu1069 经典dp例题 monkey and Banana
思路:这道题的核心是对于状态方程的设立,在这里dp[i]表示的在已经堆好的砖块下面再垫上第i块石头的高度,建立完dp后,再找出所有dp里面的最大值。需要注意的是一个砖头可以产生6种状态。然后其中一个细节是需要用sort自定义排序,顺序是长度最小的在前面,长度相同则宽度小的在前,这样处理的好处是方便你在建立dp的过程中优化,具体的优化细节可以在代码中看;代码:#include<cst...原创 2018-10-28 17:53:24 · 150 阅读 · 0 评论 -
hdu1176 kuangbin dp专题
思路:对于dp之类的题来说最重要的就是转移方程的建立吧,在这道题中我们可以得知人要想到达x点,他只能从x+1处,x-1处或者x处原地不动来到达,那么转移方程也就同样建立起来,唯一需要注意的一点大概就是对于0和10这两个临界点的处理。代码:#include<cstdio>#include<algorithm>#include<cstring>us...原创 2018-10-28 20:53:59 · 145 阅读 · 0 评论 -
hdu 1257
思路:感觉这题就是模拟啊!!不过鉴于是在kuangbin的dp专题,索性就用dp来做吧。这里dp[i]表示第i枚导弹是第几个系统代码:/* POJ2533 Longest Ordered Subsequence */ #include <iostream> using namespace std; const int N ...原创 2018-10-28 21:22:23 · 233 阅读 · 0 评论 -
hdu1024 动态规划
题意是给你个数字序列,现在让你把这个序列分成m个连续的子序列,且要求这m个子序列的累加和最大。思路:这道题的题意可以理解为问在序列为末尾时,把序列分为m个子序列这个状态时的最大累加和,那么可以得出这个状态应该是由上一个状态转移得来:(因为dp[i][j]表示数到第j个字符时,前j个数字序列被分为i组时的最大值)dp【i][j]=max(dp[i-1][j]+num[j],dp[i][j-1]+...原创 2018-10-25 23:12:16 · 683 阅读 · 4 评论 -
HDU1160 胖老鼠的速度 dp lis的活用,玄学改bug
题意大致就是:求出一个最长的重量递增,速度递减的序列,并记录路径,这道题本身并不难,只是lis的活用,难的是调bug!!!!,我改了两天,怎末改都是WA,直到刚刚,我从g++换成了c++,就ac了,哭。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring...原创 2018-11-06 21:42:03 · 269 阅读 · 0 评论 -
codeforces #535 D题 DIVERSE garland 简单dp
题意就是给你一个手环的颜色顺序,现在定义要求每个珠子跟两侧的珠子颜色都不一样时,这个手环被定义被diverse garland,分析:很自然应该想到深搜的这样一种处理思路,但是因为题目要求数据量是2*10^5所以,这样做很明显是会超时的,因此,就要想到这一类问题的另一个求解方法:简单dp,使用简单dp'的方法就是把你递归的过程转换成dp比较的过程。举个例子,在这道问题中,如果你是用深搜的方式来...原创 2019-01-31 17:00:34 · 244 阅读 · 0 评论 -
2018ACM—ICPC焦作网络预选赛B题 三维dp
题意就是给你一个数组,再给你一个字符串,这个字符串保证只有+-*/这四个字符,现在你有一个初始值,当你在数组中选则一个值时,你就要用字符串头部的运算符进行运算,然后这个头部字符向后移一位,问当所有的字符都被使用后最大值是多少?题目链接:https://nanti.jisuanke.com/t/31711思路:从题意上理解可以得出:这道题类似于01背包,对于每个房间都有进或者不进的情况,只不...原创 2018-09-18 20:34:41 · 264 阅读 · 0 评论 -
HPU——6001———预处理——dp
题目原链接:http://net.hpuacm.cf/problem/6001这道题也是一道需要预处理的问题,分别用两个数组来记录水平方向上的每个点身后的最多不相同连续字母个数,一个记录垂直的个数,然后再分别计算,具体的在代码中注释代码:#include<bits/stdc++.h>using namespace std;const int inf=0...原创 2018-09-04 20:23:41 · 205 阅读 · 0 评论 -
hdu 1257 导弹拦截系统 最长递增子序列模板题
题意不在赘述。 在处理这个问题之前需要知道一个性质就是求一组数的连续递减子序列个数,相当于求这整组数的最长递增子序列长度于是就直接套模板就好;#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace st...原创 2018-08-09 21:22:07 · 162 阅读 · 0 评论 -
关于dp的几个模板的简记
01背包的模板套用,一维数组 样题 int dp[MAXN]; for(int i=0;i<n;i++) for(int j=W;j>=w[i];j--)//这里要记住,是j=w,j--,后面在处理完全背包问题时,就会反过来,在这里不在多说,只是提醒一下 dp[j]=max(dp[j],dp[j-w[i]]+v[i]);//dp[i][j]表示的是第i个物品在容...原创 2018-08-09 21:39:40 · 1605 阅读 · 0 评论 -
简单树形dp——hdu1520没有上司的晚会
There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tr...原创 2018-08-10 21:23:26 · 251 阅读 · 0 评论 -
一道简单的dp 硬币兑换 HDU1284 coin
题目大意是,现在只有1,2,3的硬币若干,问指定一个数,有多少种分法;我当初一看到这个题就直接无脑的想把一个状态看成三个子状态的和(也就是f4=f1+f2+f3),这其实是不对的,因为这样的话,f4的值你会发现是6,其实应该是3,产生这个错误的原因是因为如果直接相加的话会有重复和漏项。那么这道题的正确思路应该是: ...原创 2018-08-07 20:18:27 · 226 阅读 · 0 评论 -
暑假第四场积分赛——G题 colorful 二维动态数组dp+类前缀和处理
比赛网站http://net.hpuacm.cf/contests题意描述 Philo的周围一片黑暗。他踏出一步,脚下发出光亮。该世界规则描述如下:这个世界建立在一个平面上,该平面由n*mn∗m个玻璃板组成,初始每块玻璃板都为熄灭状态且都可以被点亮,每一个玻璃板的边长是1。每一块玻璃板上都有一个数值xx,xx代表了这块玻璃板所发出光的亮度,每次点亮的方格必须是连续的,被点亮的方...原创 2018-08-13 16:30:20 · 157 阅读 · 0 评论 -
hdu 2546 饭卡——一道简单的 01背包
今天讲的是动态规划,学长们拉了13道题让我们做一下,一下午大概4小时,做了5道题(还是太弱了 摊手) 题意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知...原创 2018-08-08 22:46:13 · 341 阅读 · 0 评论 -
HRBUST - 1116 选美大赛 LIS记录路径模板题
题意大致就是给你一组数求这组数的LIS,然后输出路径,就酱;这道题的两个部分都是模板,属于入门系列,求上升子序列就直接套用白书的板子,然后记录路径就使用path数组来记录每个点的前驱节点,然后输出就好;代码:#include<iostream>#include<cstdio>#include<cstring>using namespace ...原创 2018-08-25 10:05:03 · 247 阅读 · 0 评论 -
POJ ——2250 Compromise 【LCS的记录路径】
题意大致就是给你两个文本,文本里面有很多单词,问你这个两个文本中相同的单词个数最大是多少,输出路径;这道题跟LIS最大的不同就是LIS是对一个串进行处理,所以可以使用一个path数组来进行记录路径,而LCS则是两个不完全相同的文本,无法使用path数组来记录某一个单词的前驱位置,所以这里使用了dfs递归搜索,这也是给我所学习到的一点,之前都是把dfs当成一种搜图工具,没有了解本质;只不过是一个...原创 2018-08-25 11:23:17 · 212 阅读 · 0 评论 -
poj 1417 种类并查集+普通dp
题意就是:现在这里有两群人,一群人只会说真话,另一群人只会说假话,但你不知道这些人中哪些是说真话的,所以你就去问,然后得出一些信息,其中你只问了是不是说真话的人这一个问题。现在让你去判断这两群人中哪些人是说真话的,如果可以判断请按照升序把说真话的人的编号说出,如果不能,输出no分析:首先对于这道题,我们可以很明显的看出这是一个牵扯到分类的问题,所以要有使用并查集的意识,然后就是去思考如何判断哪...原创 2019-02-27 10:26:17 · 165 阅读 · 0 评论