
ACM_DP
文章平均质量分 84
AC_Dreameng
行有余力,则来刷题!
展开
-
HDU2084 数塔 poj1163The Triangle
#include int main(){ int a[105][105]; int i,j,n; while(scanf("%d",&n)!=EOF) { for (i=0; i<n; i++) { for (j=0; j<=i; j++) { sca原创 2015-10-20 23:11:02 · 1150 阅读 · 0 评论 -
POJ 1189 钉子和小球【基础DP】
题目是中文就不多啰嗦了,但是有一点,如果某个点没有钉子,那么小球会落到下面第二层的位置。理解以后就和POJ1136 The Triangle差不多了。由于概率每次都要处于2,并且分数加法有点麻烦,所以,开始时一个数的值设为2^n,这样便可简化运算.运算方法有两种,一.dp[i][j]+=(dp[i-1][j-1]+dp[i-1][j])/2;二.dp[i+1][j]+=dp[i][j]/2,dp[i+1][j+1]+=dp[i][j]/2;相对来说第二种方法更简单一点.样例过程:3216原创 2017-04-21 21:44:12 · 1004 阅读 · 0 评论 -
POJ 1088 滑雪【经典DP】
经典DP,dp[x][y]表示从(x,y)为起点的最长滑雪距离.原创 2017-04-15 16:06:17 · 1172 阅读 · 0 评论 -
POJ 1157 LITTLE SHOP OF FLOWERS【基础DP】
题意:给出f朵花,v个花瓶,要把花都插到花瓶里去,而且花的顺序不能改变,编号小的在左边,每朵花放到花瓶里都会有一定的价值,问如何放才能产生最大的价值我们设dp[i][j]表示处理到第i朵花,然后把第i朵花放到第j个花瓶里时所能获得的最大价值;显然 dp[i][j] = max(dp[i - 1][k]) + val[i][j],其中k< j val[i][j]表示把第i朵花放到第j个花瓶里产生的价值本题dp状态:原创 2017-04-18 22:36:26 · 973 阅读 · 0 评论 -
PAT L2-008. 最长对称子串(25) (暴力,Manacher算法和DP解决)
1000的长度,100ms,o(N^2)的复杂度是可以过的,那就暴力枚举吧,每次枚举起点和终点没如果此子串是回文串,那终点-起点+1即为回文串的长度,即可求出最大长度.中间有个小问题,看代码注释.原创 2017-03-24 17:23:50 · 1217 阅读 · 2 评论 -
蓝桥杯 -- 历届试题 最大子阵 【DP】
和POJ1050差不多,转化成一维的,再用HDU1003的方法解决。原创 2017-03-07 22:17:06 · 1003 阅读 · 0 评论 -
BestCoderRound#89 HDU 5945 Fxx and game【单调队列+DP】
一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面两个步骤之一:1.\:X = X - i(1 <= i <= t)1.X=X−i(1<=i<=t)。2.\:2.若\:X\:X为\:k\:k的倍数,X = X / kX=X/k。现在Fxx想要你告诉他最少的运行步骤,使\:X\:X变成\:11。原创 2016-10-30 21:17:51 · 1262 阅读 · 0 评论 -
POJ 3356 AGTC 【最短编辑距离,经典DP】
a,b:是字符串动态规划最小编辑距离,dp[i][j]表示取a的前i个字符和b的前j个字符操作的最小次数。dp[0][j]=j: 取a的前0个字符和b的前j个字符操作的最小次数为(j),只能添加到x dp[i][0]=i: 取a的前i个字符和b的前0个字符操作的最小次数为(i),只能删除x dp[i][j]只有三种来源: 1、由x删除一个字符得到:原创 2016-11-07 22:22:49 · 896 阅读 · 0 评论 -
HDU 1257 最少拦截系统 【坑题,贪心,LIS】
虽然题目是中文的,但是不是一般的号理解(或许是我理解能力差)。题目中n的数量也没说!!!题目给的样例:第一套拦截系统:383,207,155,第二套拦截系统:300,299,170,158,65再给一组坑爹的样例吧:87,6,5,6,3,2,4,1答案是3吗?恭喜你WA!其实对于这组数据,只要两套就够了第一套拦截系统:7,6,5第二套拦截系统:6,3,2这是毫无疑问的,对于剩下的两个数据,继续用第一套系统就可以了?不是吗?理解题目后就可以贪心了,注意:第一份代码中数组a保存的每套原创 2016-10-25 20:58:41 · 5549 阅读 · 8 评论 -
POJ 3624 Charm Bracelet【01背包入门题】
Charm BraceletTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 34333 Accepted: 15215DescriptionBessie has gone to the mall's jewelry store and spies a原创 2016-09-21 20:59:35 · 2008 阅读 · 0 评论 -
背包问题九讲笔记_01背包
摘自Tianyi Cui童鞋的《背包问题九讲》,稍作修改,方便理解。01背包问题描述已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益这里,我们先讨论在不超过背包容量的情况转载 2016-09-20 17:55:50 · 749 阅读 · 0 评论 -
HDU 2602 Bone Collector【01背包入门题】
01背包入门题:转态转移方程:f[i][v] = max ( f[i-1][v],f[i-1][v-c[i] ]+w[i] )f[i][v]:前 i 件物品放入容量为v的背包获得最大价值。c[i]: 第 i 件物品的体积。w[i] :第 i 件物品的体积价值。注意:输入数据的时候数组下标要从 1 开!优化成一维的:伪代码:for i=1..N for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]};f[v] : 体积为v的背包的最大价值原创 2016-09-20 17:28:47 · 1820 阅读 · 0 评论 -
HDU 1978 How many ways(第一道记忆化搜索+DP)
How many waysTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4610 Accepted Submission(s): 2726Problem Description这是一个简单的生存游戏,原创 2016-07-05 19:25:49 · 3014 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese (记忆化搜索)
FatMouse and CheeseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7730 Accepted Submission(s): 3202Problem DescriptionFatMou原创 2016-04-25 11:12:18 · 1374 阅读 · 2 评论 -
HDU5115 Dire Wolf(区间DP)
Dire WolfDire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not all, Dire Wolves appear to originate from Draenor.Dire wolves look like normal wolves, but these creatures are of nearly twice the size. These po原创 2015-12-06 22:09:23 · 1102 阅读 · 0 评论 -
POJ1159 Palindrome(dp加最少字母构成回文字符串)
PalindromeTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 57426 Accepted: 19910DescriptionA palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program原创 2015-10-27 20:04:30 · 1866 阅读 · 0 评论 -
杭电1003 Max Sum (dp)
杭电1003 Max Sum (dp)原创 2015-09-22 23:22:51 · 1625 阅读 · 0 评论 -
POJ 1276 Cash Machine【多重背包】
题意:有各种不同面值的货币,每种面值的货币有不同的数量,请找出利用这些货币可以凑成的最接近且小于等于给定的数字cash的金额.样例1:要取735,取款机内有3种钱:4张125的,6张5的,3张350的.735=3*125+2*5+1*350动态规划,多重背包,可以二进制优化.原创 2017-04-23 22:27:23 · 1026 阅读 · 0 评论