DP
文章平均质量分 75
wmn_wmn
这个作者很懒,什么都没留下…
展开
-
NYoj 249
是一道简单题了,应该说是数据比较水了。。。题目如下: 描述A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The re原创 2011-09-01 12:45:38 · 572 阅读 · 0 评论 -
HDU4223&&NYOJ422 首届华中区程序设计邀请赛暨第十届武汉大学程序设计大赛
这道题是武大校赛的题目,和我们OJ以前月赛时的题目一样,只不过我们OJ当时还让求绝对值最大值了,这道题目只让求绝对值最小了。直接用以前的代码就可以ac。就这道题目来说,因为让求绝对值最小的和,所以我们可以先用sum[i]数组保留原数组的前i项和,再对sum数组从小到大排序。这样,最小值就在sum[i]-sum[i-1]和sum[i-1]之间,循环比较久可以了。至于求最大值,排好序后,最大值只可能是原创 2012-04-15 19:31:53 · 4654 阅读 · 0 评论 -
POJ 4044 寻找最长连续公共子序列
题意很简单,就是对两组数据排序后寻找最长连续公共子序列,排序前应该先去重。由于数据范围很小(30),所以可以完全暴力求解。随后将最长连续公共子序列的各个数按各位升序排序即可。ac代码:#include #include #include #include using namespace std;const int N = 35;int numa[N],numb[N];b原创 2012-05-10 08:31:48 · 2663 阅读 · 0 评论 -
POJ 1050 To the Max 经典DP
题意:就是给你一个矩阵,求出最大子矩阵。最大子矩阵的含义就是该矩阵的元素和最大。 思路:把该问题转化为最大连续子串和问题,即二维转化为一维。假设求出的最大子矩阵为从x行到y行,从第c列到第r列,则该矩阵转化为一维即是从第1列到第n列的所有x行到第y行的元素和的最大连续子串和。这样后,复杂度为n的三次方,在求最大连续子串和的时候用DP就可以了。代码:#include #inclu原创 2012-07-06 11:02:03 · 996 阅读 · 0 评论 -
POJ 1163 The Triangle 简单DP
题目来源:http://poj.org/problem?id=1163题意:数塔问题,经典DP思路:从上向下走,每次都走最大路径,在最下面一行循环找最大即可。代码:#include #include #include using namespace std;#define CLR(arr,val) memset(arr,val,sizeof(val))const int原创 2012-07-09 07:53:04 · 725 阅读 · 0 评论 -
POJ 1276 Cash Machine 多重背包+二进制优化
来源:http://poj.org/problem?id=1276题意:就是有一些一定数量和一定面值的钱,还有一个总钱数,让你在所给的纸币中选出一定数目的钱,使这些钱的和小于等于总钱数,并且使这个和尽可能的大。思路:将总钱数看作是背包的体积,将钱币的面值看作是物体的体积,物体的价值和体积相等。即转化为多重背包问题,由于数据比较大,所以需要用到二进制优化。代码:#include #原创 2012-07-09 11:31:02 · 906 阅读 · 0 评论 -
POJ 1088 滑雪 DP + dfs
题目来源:http://poj.org/problem?id=1088题意:汉语题意,不说了思路:这道题的动态方程是比较容易想的。就是说拿当前点的高度和该点四周的高度相比,若比周围点高度高,则比较长度。dp[i][j] = max(dp[i][j],dp[newx][newy]+1),这样即可。在比较的时候用到了深搜找路径。本来想到了用深搜,担心超时,一直不敢写。深搜时有一个地方要注意,就原创 2012-07-08 10:25:34 · 1479 阅读 · 0 评论 -
POJ 1458 Common Subsequence 经典DP
题目来源:http://poj.org/problem?id=1458题意:求最长公共子序列问题思路:经典dp问题,用dp[i][j]表示串1的前i个和串2的前j个的最长公共子序列。则当s1[i]=s2[j]时,dp[i][j] = dp[i-1][j-1] + 1,否则,dp[i][j] = max(dp[i-1][j] , dp[i][j-1])代码:#include#inc原创 2012-07-09 16:05:08 · 663 阅读 · 0 评论 -
POJ 1742 Coins(背包问题)
来源:http://poj.org/problem?id=1742题意:给你一定数量和面值的纸币,在不超过总钱数m的情况下,用所给的纸币共能形成多少种钱数思路:本来想到多重背包上面了,用多重背包写了一下,tle,后来用二进制优化,还是tle,后来看dis,说用优先队列,网上搜资料,没看懂,,后来看acmj1991的博客,说是用数组标记法,然后不懂神马是数组标记法。后来才知道,其实就是个常规原创 2012-07-10 16:24:04 · 783 阅读 · 0 评论 -
POJ 1887 Testing the CATCHER 经典DP
来源:http://poj.org/problem?id=1887题意:求最长递减子序列思路:用dp[i]表示前i个数的最长递减子序列,则dp[i] = max(dp[j]) + 1,其中,i>j 且 num[i] 代码:#include #include #include using namespace std;#define CLR(arr,val) memset(原创 2012-07-10 17:39:46 · 828 阅读 · 0 评论 -
POJ 1952 BUY LOW, BUY LOWER
来源:http://poj.org/problem?id=1952题意:求最长单调递减子序列的长度以及有多少种途径到达该最长单调递减子序列。思路:求最长单调递减子序列是比较容易的了,关键是求路径的条数。而且还要去重。如5 5 2 2 1,其实是只有一条5 2 1。该题难点就在于去重,去重方法如下:我们在求单调递减子序列的时候,可以用一个二重for循环求,在循环中dp[i]表示的是到第i原创 2012-07-12 09:10:36 · 697 阅读 · 0 评论 -
【DP_树形DP专辑】
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多系想你,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,伸展树、线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说的树方面的内容相当多,本专辑只针对在树上的动态规划,即树形DP.做树形DP一般步骤是先将树转换为有根树,然原创 2012-07-12 09:40:54 · 1568 阅读 · 0 评论 -
HDU 1712 ACboy needs your help 多组背包
来源:http://acm.hdu.edu.cn/showproblem.php?pid=1712题意:用m天的时间来学n门课程,给出n和m和一个num[n][m]的矩阵,num[n][m] 代表的是花m天的时间学习第n门课程所获得的价值,求最多能获得多大的价值思路:将天数m作为背包的总体积,科目数目作为背包的种类数目,天数j作为背包的重量,num[i][j]作为背包的价值。由于一个科目只原创 2012-07-12 13:06:46 · 810 阅读 · 0 评论 -
POJ 2392 Space Elevator 0-1背包
来源:http://poj.org/problem?id=2392题意:有一些种类的砖块,其中每种砖块的高度和数量给了,而且每种砖块都有一个限制条件,就是说以该种砖块结束的最大高度H不能超过某个高度,不同砖块的该高度不同。求最高的高度是多少。思路:由于每种砖块的高度H限制了取得砖块数,而且也决定了砖块放的顺序。因此,先对砖块的种类按照H的高度从小到达排序,之后对每种砖块按照0-1背包处理就原创 2012-07-12 17:51:36 · 971 阅读 · 0 评论 -
POJ 1185 炮兵阵地 状态压缩
来源:http://poj.org/problem?id=1185题意:中文题意,,,思路:题目给的是一个n*m的矩阵,其中有一些方格不能放炮弹,而且每枚炮弹的攻击范围是2,也就是说,若一个方格放置了炮弹,则该方格上下左右的2个方格都不能放炮弹。我们一行一行来考虑,由于m的范围比较小(<= 10),所以我们可以先用dfs枚举出来每行可能放炮弹的状态,然后再想,因为炮弹的攻击范围是2,所以第原创 2012-07-21 10:29:30 · 766 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream 状态压缩
来源:http://poj.org/problem?id=2411题意:就是用一个1*2 的多米诺骨牌去铺一个m*n的矩形,问最多有多少种方法思路:倘若n*m为奇数的话,很容易明白,不能铺满矩形,答案为0。当n*m为偶数时,我们考虑,由于每个格子都要铺满,因此每个格子当前铺的情况有三种,:该格子和该格子正上方的一个格子一起竖着铺,:该格子和该格子右面的一个格子一起横着铺,:该格子暂时不铺。原创 2012-07-22 20:34:30 · 2133 阅读 · 2 评论 -
MAGRID DP
来源:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10907#problem/A ACM International Collegiate Programming Contest, Asia-Amritapuri Site, 2011题意:有一个矩阵,要求从左上角走到右下角。每个方格里有正数或者负数。从左上角走的时原创 2012-08-07 19:47:34 · 837 阅读 · 0 评论 -
NYOJ 536 矩阵链乘 经典dp
是月赛时的一道题,经典的dp。转移方程为:m[i][j] = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j];m[i][j]表示为i到j相乘的最小次数。p[i-1],p[i]分别为第i个矩阵的行和列。题目:开心的mdd时间限制:1000 ms | 内存限制:65535 KB难度:3描述原创 2012-04-24 09:46:27 · 1366 阅读 · 0 评论 -
杭电 2870 经典的动态规划
因为这道题的情况比较少,即最大值只可能在字母a,b,c之间产生,所以可以枚举3中情况,之后取最大值即可。取最大值时用动态规划的思想做,先对列统计,即高度。之后再对行统计,即宽度。再统计宽度的时候用到了并查集的思想,设置两个属性,left和right,如果后面的高度大于前面的高度,说明后面的left属性可以左移。同理,如果前面的高度小于后面的高度,说明前面的right属性可以右移。这样一直移动,直到原创 2012-03-06 01:47:29 · 840 阅读 · 1 评论 -
动态规划 杭电1176
这道题也是想了好久,想了好久才想到数塔上来,想到之后心里那个happy啊,悲催的是,又开始纠结到底该怎么循环。因为是从中间点开始出发的,,,我去,顺序循环逆序循环都不行,,,最后还是看了看别人的代码才明白怎么处理这种情况,,,,,,,,,,学习了。。。。。。。。。。。题目:免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Li原创 2012-01-06 11:36:33 · 940 阅读 · 0 评论 -
动态规划 杭电1257
这道题让求最少的拦截装置,由题意知,当导弹高度递减时,可以用一套装置拦截。我们可以换种思路想一下,当什么情况下需要增加拦截装置,当后面一个数比前面某个数大的时候,这两个导弹不能再一个装置里,即此时需要增加一套装置。这样问题就明了了,即为求最长子序列的问题,简单的动态规划。题目:最少拦截系统Time Limit: 2000/1000 MS (Java/Others) Memor原创 2012-01-07 10:05:19 · 1939 阅读 · 0 评论 -
北邮12月份月赛 E 动态规划
一道动态规划的题,和NYOJ上的一道题一样,直接贴的代码水过。。。。。。。。。题目:E 最大矩阵Accept:36 Submit:61Time Limit:1000MS Memory Limit:65536KBDescription给一个矩阵。(矩阵的值为整数,范围为[-127,127原创 2012-01-06 13:05:42 · 1398 阅读 · 0 评论 -
动态规划 2845 Beans
这道题数据坑爹,,,有木有!!!!!!题目只说了M*N<=200000,没说M和N的具体范围,,有木有因为这个wa的???有木有???我就因为这个wa了好几次,刚开始开的是1005的二维数组,一直wa,纠结了好久,找不到错误。后来抱着尝试的心态把1005改成2005就ac了,,,坑爹啊!就题目来说,我是先用动态规划把每一行的最大值求出来,然后再用动态规划的方法把n行的最大值求出来。简单来说,就是求原创 2012-01-06 16:52:17 · 658 阅读 · 0 评论 -
动态规划 杭电2571
这道题和NYOJ上聪明的KK是一样的,,,只不过这道题稍微增加了点难度,而且这道题有负数,因此需要特殊考虑一下第一行的数据,否则会出错。提供一组易错数据。2 4-3 2 1 71 3 -7 6这组数据就要考虑到负数,若只考虑正数,就会出错。题目:命运Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327原创 2012-01-02 15:09:38 · 1133 阅读 · 0 评论 -
DP 杭电2084
DP水题继续中,,,,,又是一道水题,,,明天不能再水了。不过貌似水平有那么一点点提高。。。。。。。题目:数塔Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8582 Accepted Submission(s):原创 2012-01-02 21:28:22 · 810 阅读 · 0 评论 -
动态规划 杭电1231
经典DP问题,最大连续子串,,,,,第一次用了n2的方法,tle了,后来仔细想了想,可以用o(n)的方法解决,ac了。题目:最大连续子序列Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9028 Accepted原创 2012-01-02 19:11:17 · 1020 阅读 · 0 评论 -
动态规划 杭电1069
这道题真是一个纠结,,从上午8点开始一直写到现在,刚ac,,伤不起啊。早上想了好久,才想明白一个木块最多可以放三个,然后就是纠结怎么排序的问题了,,一直想了两个小时,算是想明白了。悲催的是,在NYOJ上ac了,在HDU上却怎么也ac不了,,又仔细想了想,每一个木块都应该分6种情况考虑,刚开始我只考虑了3种,,悲剧,,一天,,,终于A了一道题,没有光头。。。。。。。。。。题目:Monke原创 2012-01-03 16:16:49 · 1446 阅读 · 0 评论 -
动态规划 杭电 1087
刚把纠结了一上午的一道DP题写出来,这次终于碰到个软柿子,一次水过,,水题。题目:Super Jumping! Jumping! Jumping!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10323 Acce原创 2012-01-02 16:08:20 · 1062 阅读 · 0 评论 -
动态规划 杭电4001 大连赛区网络赛水题
看别人说这是打联赛区网络赛的水题,,水题,,,结果水了几个小时,有木有!!!!!!水不水!!!!!!!由于下午刚做了一道类似的题,所以做这道题的时候就感觉简单了一点。。刚开始wa了几次,主要是排序没排好。个人感觉此类题目最主要的还是排好序,能排好序,这道题就基本上解决了。具体来说这道题,就是按长、宽排序,当长和宽都相等时,则按类型序号排序。因为由题意知,类型序号大的条件更严格,因此,在满足条件的前原创 2012-01-03 19:50:42 · 3607 阅读 · 0 评论 -
动态规划 杭电1171 0-1背包和完全背包结合
好久不看动态规划,竟然连最简单的背包问题都解决不了了,,,,这让人情何以堪!!!!!!!!先把0-1背包看了看,还有个地方不是太懂,下午有时间再把完全背包看看。具体这道题来说,其实是比较好想的,就是分两种情况,分别用0-1背包和完全背包就可以解决了。刚开始wa了几次,一直找不到错误,最后竟然发现输出顺序反了。。。。。。题目:Big Event in HDUTime Limit: 1原创 2012-01-04 11:34:46 · 1430 阅读 · 0 评论 -
动态规划 杭电1203 0-1背包
这道题的数据超级神,,,有木有!有木有!!!!!!!变态的数据,明明是一道简单题,却非要让大家wr了5、6次,无语。。。。。就是个0-1背包。题目让求得到offer的最大概率,只需要求出得不到offer的最小概率即可。题目:I NEED A OFFER!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/327原创 2012-01-04 15:34:01 · 1354 阅读 · 0 评论 -
杭电2851 简单dp
这道题说白了就是一道水题,就是题意不太好理解。题意:给你多个区间,每个区间有一个危险值,接下来有多次询问,求从第一个区间到第n个区间的最小危险值。就是一道简单的dp,题目:Lode RunnerTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su原创 2012-02-20 20:09:24 · 908 阅读 · 0 评论 -
杭电 2829 蛋疼的动态规划
话说这道题是一道惊天地泣鬼神的动态规划题,在调试了n久之后,蓦然发现系统自带的INT_MAX不能和整数相加。。。。这让我情何以堪!!!!!题目:LawrenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1032原创 2012-02-27 21:34:44 · 664 阅读 · 0 评论 -
杭电 2881 动态规划
这道题刚开始以为很难,,后来发现很水,,果断敲代码后,悲剧就开始了,频繁TLE。。。。后来用动态规划的思想优化了一下,还是TLE。。最后用G++提交,却莫名其妙的ac了,而且只花了1453ms,,神奇。题目:Jack's struggleTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (J原创 2012-03-05 19:18:07 · 706 阅读 · 0 评论 -
杭电 1505 动态规划
这道题基本上和杭电2870是一样的,代码绝大部分都一样。题目:City GameTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2011 Accepted Submission(s): 809Problem Descr原创 2012-03-06 02:30:07 · 831 阅读 · 0 评论 -
POJ 2184 Cow Exhibition 背包问题
来源:http://poj.org/problem?id=2184题意:有一些奶牛,他们有一定的s值和f值,这些值有正有负,最后让保证s的和为非负且f的和为非负的情况下,s+f的最大值。思路:背包问题,我们可以设dp[i][s]为前i头牛的s值为s时f的最大值,这就转化成了背包问题,即把s当成是体积,f当成是价值,而且可以成功的把二维转化成一维。又因为有负数的情况,所以我们可以都加上一个值原创 2012-08-14 11:34:26 · 2916 阅读 · 1 评论