
动态规划
文章平均质量分 75
「已注销」
这个作者很懒,什么都没留下…
展开
-
poj 2486 树形dp
Apple TreeTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 10506 Accepted: 3507DescriptionWshxzt is a lovely girl. She likes apple very much. One day HX原创 2017-04-18 17:04:31 · 389 阅读 · 0 评论 -
poj 1849 树形dp
TwoTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 1473 Accepted: 748DescriptionThe city consists of intersections and streets that connect them.Hea原创 2017-04-18 15:08:10 · 424 阅读 · 0 评论 -
poj 2342 树形dp入门
Anniversary partyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8203 Accepted: 4698DescriptionThere is going to be a party to celebrate the 80-th Anniv原创 2017-04-17 21:59:33 · 447 阅读 · 0 评论 -
uva 1331 lrj-P279 三角剖分+区间dp
题意:给出多边形,找出最大三角形面积最小的三角剖分输出最大的三角形面积题解:仔细研究可以知道,第一个点和最后一个点组成的边,一定是在某一个三角形中那么我们就通过这个边作为基准,任选一个点组合成三角形,进行划分,得到两个多边形,这个时候两个多边形的点一定是按照顺序走的然后这两个多边形再继续上叙操作这样的操作是为了保证点连续,方便计算状态转移方程就可以很容易原创 2017-09-06 09:43:24 · 463 阅读 · 0 评论 -
uva 116 动态规划 多阶段决策问题 路径记录 lrj-P270
题意:给定一个n*m的矩阵,要求从第一列的任何一行出发,每次沿右或右下或右上到达后面一列,最后到第m列任何一行整个路程的最小值,并且要求是字典序最小的题解:动态规划每一列是一个阶段,一个阶段有三个决策,逆推可以方便的记录路径然后顺着打印出来字典序最小很巧妙的利用排序解决了需要注意的是m==1的情况,所以下面的双 if 不能用 if else原创 2017-08-26 16:53:10 · 493 阅读 · 0 评论 -
uva 12563 01背包 两个最优条件 lrj-P274
题意:给你 t 秒时间,有n首歌,每一首歌的时间不超过三分钟,在结束之前唱一首678秒的劲歌金曲选了一首歌就一定要唱完并且在保持唱的歌曲数量最多的情况下,时间最长题解:虽然 t 的范围很大,有十的九次方,但是n最多只有50 ,所以不会总时间超过 180*50+678 秒此时就可以用01背包了,但是有两个最优条件用结构体存,并且重载小于符合,设置优先级,见原创 2017-08-26 18:17:30 · 386 阅读 · 0 评论 -
uva 10003 lrj-P278 区间dp入门
题意:给出一根棍子的长度,以及n个需要切割的点,每一次切割的代价是这一段需要被切割的长度问代价最小时的代价值题解:区间dpdp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[j]-a[i]); i 为区间左端点,j 为右端点,k为中间的子问题dp表示某一个区间的最小切割值区间dp 的思路,先枚举区间大小,然后枚举区间的起始位置原创 2017-09-04 21:31:38 · 394 阅读 · 0 评论 -
uva 437 动态规划 lrj - P269
题意:给出不超过30个立方体,每一种有无穷多个。要求这些立方体堆成一个尽量搞的柱子,使得每一个立方体下面的立方体的底面长宽都大于上面的底面长宽题解:很明显我们可以将每个立方体当做3个或者6个不一样的不可以旋转的长方体下面代码当做6个,是为了方便计算,这样在判断的过程中不需要加太多条件而且数据量不大,可以这样做dp思想:01背包的思想,放与不放原创 2017-08-26 10:47:09 · 327 阅读 · 0 评论 -
uva 1347 动态规划DAG lrj-P269
题意:给出按照 x 坐标排序的一系列二维坐标上的点,让你通过来回走一圈,把所有点都恰好走一遍,除了最左端和最右端的点使得总路程最短题解:让两个人同时走,并且不重合,从左边开始走道右边去令dp【i】【j】表示两个人分别走道 i 和走到 j 的时候的最短路因为dp【i】【j】==dp【j】【i】故强行令 i > j然后dp【i】【j】可以转移到dp【原创 2017-08-26 13:19:12 · 415 阅读 · 0 评论 -
hdu 6170 dp 2017 Multi-University Training Contest - Team 9
Two stringsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 674 Accepted Submission(s): 267Problem DescriptionGiving two strings a转载 2017-08-23 08:51:47 · 338 阅读 · 0 评论 -
hdu 2089 数位dp入门
不要62Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 45628 Accepted Submission(s): 17164Problem Description杭州人称那些傻乎乎粘嗒嗒的人为62(音:lao原创 2017-08-25 16:59:42 · 384 阅读 · 0 评论 -
light oj 1248 概率dp
Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dic原创 2017-07-24 17:54:42 · 358 阅读 · 0 评论 -
LightOJ 1079 概率型 01背包
As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants everything quick!) so he decided to rob banks. He wants to make a calculated risk, and grab as much mone原创 2017-07-24 15:47:03 · 390 阅读 · 0 评论 -
dp专题 lrj-p269 uva A Spy in the Metro 2003wf
lrj 入门经典 p267 从本题得到的收获:分清主线:影响决策的只有时间以及所处的车站理清次线:火车跑来跑去的,我们需要处理好他们,为我们的主线服务,即,在某些车站的时候,是否有车在这个时间故令 dp【】【】,第一维表示时刻,第二维表示在某车站出发,需要等待的时间写dp就要注意:初始化条件:这里的初始化条件就是dp【T】【i】为INF原创 2017-08-23 17:38:48 · 423 阅读 · 0 评论 -
Uva-1626 lrj-P278 区间dp
题意:给定一个由[,],(,),构成的字符串,给其添加这些括号使得其成为一个正规括号序列1 空序列是正规括号序列2 如果S是正规括号序列,那么[S]和(S)也是正规括号序列3 如果A和B都是正规括号序列,则AB也是正规括号序列题解:dp[i][j]有2种转移的方式:一种是最优矩阵链乘的转移式dp[i][j]=min(dp[i][j],dp[i][k]+原创 2017-09-05 22:08:31 · 300 阅读 · 0 评论 -
uva 11400 lrj-P275 动态规划
题意:见刘汝佳入门书籍 P275dp[i]=min(dp[i],dp[j-1]+(sum[i]-sum[j-1])*a[i].c+a[i].k);题解:见刘汝佳入门书籍 P275#include#include#includeusing namespace std;int dp[1010],sum[1010];struct Lamp{原创 2017-08-28 11:06:16 · 360 阅读 · 0 评论 -
BZoj 2748 01背包思想应用
2748: [HAOI2012]音量调节Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2316 Solved: 1466[Submit][Status][Discuss]Description一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做原创 2017-12-27 19:39:02 · 279 阅读 · 0 评论 -
2017 icpc Southeast USA D 题 Gym - 101617D Jumping Haybales 动态规划
题意:给出一个矩阵,矩阵由 # 号 和 点 号组成,如上图有#号的地方不能到达,其余地方可以到达,并且只能向右或者向下两种方式问:每次跳跃可以跳跃 1~k 个格子长度的时候,需要跳多少次才能从 左上角 跳到右下角题解:刚开始第一反应是进行广搜,但是不能进行友好的剪枝,这个复杂度达到 n*n*k 的复杂度于是想到 dp ,但是不会做,看了别人的想法得到下面代码原创 2017-12-14 20:47:38 · 591 阅读 · 0 评论 -
hiho 174周 笔试题 简单动态规划
dp[i][j]+=dp[i-1][j-k]*1.0/6;dp 表示掷第 i 次筛子,得到点数为 j 的概率需要注意的是:j 必须大于等于 i ,因为每一次掷筛子肯定得到大于等于一的点数#includedouble dp[105][605];int main(){ int n,m; for(int i=1;i<=6;i++) dp[原创 2017-11-15 20:10:15 · 344 阅读 · 0 评论 -
uva 1630 lrj-P305 字符串dp(记忆化)
题意:给出一个字符串,然后要你把他折叠成一个最短的字符串例如AAAAAAAAAABABABCCDNEERCYESYESYESNEERCYESYESYES变成:9(A)3(AB)CCD2(NEERC3(YES)题解:很容易看出来用分治的办法,但是不会把折叠起来,然后参考了一下别人的代码这里主要是很巧妙的利用了string类,方便折叠与保存,以及原创 2017-09-10 10:18:23 · 388 阅读 · 0 评论 -
uva 10285 lrj-P304 从简单DAG动态规划得到的感悟
题意:给出一个整数矩阵,请找出一条严格递减的最长路的长度题解:分析:1···没有固定起点和终点2···是二元关系,也就是DAG(有向无环图)3···lrj书上此类一律都是用记忆化搜索假设:如果我们只是用二维的dp去做,会发现永远有很多情况去做,刚开始我从四个角开始递推发现还是不行,因为这条路有很多转弯的地方仔细分析后才有了下面的代码记原创 2017-09-08 15:23:13 · 520 阅读 · 0 评论 -
uva 11584 计算最少回文串数 动态规划 lrj-P276
题意:将一个字符串化分成最少的部分,每一个部分都是回文串Sample Input3racecarfastcaraaadbccbSample Output173题解:如果 区间(j,i)是回文串,那么就if(judge(j,i)) dp[i]=min(dp[i],dp[j-1]+1);初始化dp【i】= i详细见代码原创 2017-08-30 09:24:17 · 398 阅读 · 0 评论 -
uva 1220 lrj-P282 最大独立集(树形dp)
题意:给出一个树形结构,除了老板外,每一个员工都有直属上司,在其中挑选了员工,就不能挑选他的上司问这样的挑选方法最多可以挑选多少人,方案是否唯一题解:仔细划分即可当前节点若选入,那么子节点都不能选入,并且当所有子节点都唯一的时候当前节点唯一当前节点若不选,那么子节点可选可不选,并且当选入的子节点都唯一的时候当前点唯一,或者某个子节点选或者不选都是一样的时候不唯一原创 2017-09-07 08:52:03 · 391 阅读 · 0 评论 -
uva 12186 lrj-P282 简单树形dp
题意:某个人签字的话,他的直属下属里必须有至少T%的人签字,问让老板签字最少需要多少工人签字题解:树形dp以老板为根节点,从小往上,递归计算答案即可#include#include#include#includeusing namespace std;#define maxn 100005int a,n,T;vectorsons[maxn原创 2017-09-06 22:25:24 · 357 阅读 · 0 评论 -
csuoj 1968 递推
DescriptionGiven a positive integer, N, a permutation of order N is a one-to-one (and thus onto) function from the set of integers from 1 to N to itself. If p is such a function, we represent the fu原创 2017-07-24 08:15:09 · 632 阅读 · 0 评论 -
E - Exploring Pyramids Gym - 101334E 分治
题意:给出一段序列,从一个点开始回到这个点,问这个序列是否符合这个轨迹题解:分治,看代码就可以懂了#include#include#includeusing namespace std;#define LL long long#define mod 1000000000LL dp[320][320];char str[310];LL de原创 2017-06-03 16:38:36 · 424 阅读 · 0 评论 -
E - Wooden Signs Gym - 101128E dp 枚举
题意:给出第一个矩形的所在区间,然后给出 n-1个矩形所在区间的某一侧(左侧坐标,或者右侧坐标)上一个矩形和下一个矩形必须有覆盖的部分,不能出现上面打叉的情况题解:因为题目数据范围很小,我们想到枚举区间的未知端假如枚举当前第 i 个矩形的未知端,那么还需要知道之前一层矩形的所在区间再假如枚举之前的矩形的未知端,那么久可以确定了上一层矩形所在区间了当然这个未知端不一定是题原创 2017-05-20 01:31:58 · 427 阅读 · 0 评论 -
poj 2385 经典dp
Apple CatchingTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 11038 Accepted: 5365DescriptionIt is a little known fact that cows love apples. Farmer Joh原创 2016-02-01 00:12:04 · 459 阅读 · 0 评论 -
poj 3211 结构体-分组一维dp
Washing ClothesTime Limit: 1000MS Memory Limit: 131072KTotal Submissions: 9462 Accepted: 3031DescriptionDearboy was so busy recently that now he has piles of cl原创 2016-02-01 00:12:02 · 440 阅读 · 0 评论 -
poj 3257 二维dp
Cow Roller CoasterTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 2837 Accepted: 1121DescriptionThe cows are building a roller coaster! They want your原创 2016-02-01 00:11:59 · 536 阅读 · 0 评论 -
poj 2479 2593 最大字段和
#include#include#define MAX(a,b) ((a>b)?(a):(b))int a[50001];int left[50001];int right[50001];int main(){ int t; scanf("%d",&t); while(t--) { getchar(); int n; scanf("%d",&n); for(int i=0;i scan原创 2016-02-01 00:10:59 · 735 阅读 · 0 评论 -
poj 2533 poj3903 poj1836 最长上升子序列 LIS
poj2533Sample Input71 7 3 5 9 4 8Sample Output4求不是连续的最大上升序列题目中: All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).这题目我发现两个问题1:同样的代码可以跑出32MS的误差2:三目运算符比i转载 2016-04-19 22:03:24 · 570 阅读 · 0 评论 -
hdu1085 母函数(初始化问题很重要)
这里就是母函数的应用:(1+x+...+x^num1)(1+x^2+...+x^2num2)(1+x^5+,,,+x^5num3),展开,系数不为0的数都是可以由硬币组合出来的。代码里面的主要要注意的问题就是初始化问题,因为在母函数里面会需要后面的一大串的数字进行组合而得来的,就是上式子展开然后要注意数字后面的0的问题,还有首个数字的第一个式子的初始化为1代码就是、#inc原创 2016-03-24 18:04:31 · 431 阅读 · 0 评论 -
hdu1003 最大子序 记录起止点
Max SumTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 205709 Accepted Submission(s): 48066Problem DescriptionGiven a sequenc原创 2016-03-05 20:42:18 · 450 阅读 · 0 评论 -
poj1050 最大子矩阵和
To the MaxTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 46741 Accepted: 24745DescriptionGiven a two-dimensional array of positive and negative integer原创 2016-03-20 13:39:00 · 395 阅读 · 0 评论 -
zoj 3747 递推好题
Attack on TitansTime Limit: 2 Seconds Memory Limit: 65536 KB Over centuries ago, mankind faced a new enemy, the Titans. The difference of power between mankind and their newfound enem原创 2017-04-19 17:55:24 · 742 阅读 · 0 评论 -
code force 429B dp好题
B. Working outtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputSummer is coming! It's time for Iahub and Iahubina to原创 2017-04-19 10:05:22 · 487 阅读 · 0 评论 -
poj1014完全背包 hdu2191多重背包 经典二进制优化
多重背包或者完全背包转换成 01 背包问题就是多了个二进制优化把它的件数C 用分解成若干个件数的集合这里面数字可以组合成任意小于等于C 的件数,而且不会重复之所以叫二进制分解,是因为这样分解可以用数字的二进制形式来解释比如:7的二进制 7 = 111 它可以分解成 001 010 100 这三个数可以组合成任意小于等于7 的数而且每种组合都会得到不同的数15 = 111原创 2016-05-25 20:32:15 · 1415 阅读 · 0 评论 -
poj1384 完全背包(刚好塞满,经典初始化问题)
Piggy-BankTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 10116 Accepted: 4951DescriptionBefore ACM can do anything, a budget must be prepared and the原创 2016-05-18 21:08:10 · 1248 阅读 · 0 评论 -
poj3624----01bag(一维+(二维+滚动数组))
#include#include#includeusing namespace std;int a[40000][3];int dp[40000];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i scanf("%d%d",&a[i][0],&a[i][1]); } memset(dp,0,s原创 2016-02-01 00:11:50 · 754 阅读 · 0 评论