动态规划
文章平均质量分 81
luminous11
ACM/ICPC铁牌狗飘过
展开
-
Ural 1586 Threeprime Numbers
题意:构造一个长度为n 的数,其中任意取三个连续的数,保证这三个连续的数是一个三位数的素数,求长度为n 的数有多少种可能。链接:http://acm.timus.ru/problem.aspx?space=1&num=1586思路:首先预处理凷100-1000以内所有的素数,保存在num[j][k][l]中,再进行动态规划,设计状态dp[i][j][k],表示长度为i时,第一位为j,第原创 2015-05-24 14:37:12 · 519 阅读 · 0 评论 -
HDOJ 2859 Phalanx
题意:给出一个矩阵,求其中的最大对称子矩阵链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859思路:基础dp,从前一个子矩阵上转移,判断当前矩阵是否最大注意点:无以下为AC代码:Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryC原创 2015-05-13 22:07:01 · 268 阅读 · 0 评论 -
POJ 3616 Milking Time
题意:一头奶牛在[l,r]时间内能产奶t升,每次产奶之后要休息m分钟,判断在n分钟内最多能产多少奶链接:http://poj.org/problem?id=3616思路:基础dp,从前一个允许时间内转移最大产奶量。状态转移方程:num[i].be - num[j].en >= r ? dp[i] = max ( dp[i], dp[j] + num[i].val ) : dp[i] = d原创 2015-05-13 22:35:50 · 470 阅读 · 0 评论 -
HDOJ 1078 FatMouse and Cheese
题意:在一个迷宫中,一个老鼠在(0,0),每一步可以走k格(链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078思路:LIS的变形,转化为二维,通过优先队列优化的搜索进行查找最优解,dp[x][y]当前路径到这个点的最大值注意点:无以下为AC代码:Run IDSubmit TimeJudge Stat原创 2015-05-12 22:24:22 · 296 阅读 · 0 评论 -
POJ 3186 Treats for the Cows
题意:有一个序列num,只能从两端取出,第i个取出的数的代价为i*num(i),求将这个序列中所有数全部取出的最大代价链接:http://poj.org/problem?id=3186思路:区间dp,利用记忆化搜索查找[l,r]中的合并的最大值,记录在dp[l][r]中注意点:无以下为AC代码:Run IDUserProblemResult原创 2015-05-12 21:05:55 · 345 阅读 · 0 评论 -
POJ 1661 Help Jimmy
题意:Jimmy要从高处移动到地面,其中有n个平台,在一个平台上可以从两边跳下,每移动一个单位距离花费1秒,下落时速度也为1单位/秒,每次下落的高度不能超过h,求Jimmy到底面的最短时间。链接:http://poj.org/problem?id=1661思路:记忆化搜索,每个跳板两端只能落在后面的一个跳板上,按高度排序之后直接搜索,记录每块跳板两端的最小值注意点:无以下为原创 2015-05-12 14:03:13 · 349 阅读 · 0 评论 -
POJ 1458 Common Subsequence
题意:求最长公共子序列链接:http://poj.org/problem?id=1458思路:LCS模板题,状态转移方程dp[n][j] = max ( dp[n][j-1], dp[n^1][j-1] ) + ( a[i] == b[j] ) ? 1:0注意点:无以下为AC代码:Run IDUserProblemResultMemory原创 2015-05-12 09:46:38 · 288 阅读 · 0 评论 -
HDOJ 1160 FatMouse's Speed
题意:有n只老鼠,分别知道每只老鼠的体重与速度,找到尽可能多的老鼠证明体重越轻的速度越快链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160思路:最长LIS序列,按体重排序后,查找速度单调下降的最长序列。注意点:无以下为AC代码:Run IDSubmit TimeJudge StatusPro.I原创 2015-05-12 07:35:54 · 359 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence
题意:已知一个长度为n的序列,求一个最长上升子序列的长度链接:http://poj.org/problem?id=2533思路:简单的LIS序列,状态转移方程 num[i] > num[j] ? dp[i] = max ( dp[i], dp[j] + 1 ) : dp[i] = dp[i];注意点:无以下为AC代码:Run IDUser原创 2015-05-12 14:44:07 · 306 阅读 · 0 评论 -
POJ 3666 Making the Grade
题意:给出一个序列n,允许变化序列中每个数的值,花费为变化的绝对值,使得这个序列成为一个非递减序列,判断花费的最小值链接:http://poj.org/problem?id=3666思路:dp,可以得出每个位置的变化后的值都是原序列存在值,将原序列存在临时数组中进行排序,判断每个位置的最小的变化情况,进行dp,状态转移方程dp[j] = min ( dp[j-1], dp[j] )注意原创 2015-05-13 22:44:03 · 339 阅读 · 0 评论 -
Ural 1146 Maximum Sum
题意:已知一个矩阵,求其中的最大子矩阵链接:http://acm.timus.ru/problem.aspx?space=1&num=1146思路:维护矩阵的每一行的前缀和,按列统计求n^2个最大连续子段和,求出其中的最大值注意点:无以下为AC代码:IDDateAuthorProblemLanguageJudgement result原创 2015-05-15 23:33:08 · 358 阅读 · 0 评论 -
Ural 1167 Bicolored Horses
题意:将n匹马进入k个马厩中,这些马有两种颜色,黑色与白色,分别用0和1表示。要求每个马厩中都有马,并且马厩中的马必须是连续的,每个马厩都有一个不快乐值,不快乐值=该马厩中的黑马数*该马厩中的白马数,求怎样安排马才能使这些马的不快乐值最小。链接:http://acm.timus.ru/problem.aspx?space=1&num=1167思路:动态规划,设计状态dp[i][j],表原创 2015-05-19 22:32:43 · 564 阅读 · 0 评论 -
Ural 1017 Staircases
题意:将n个方块叠成一个高度严格递增的台阶,求有多少种叠法链接:http://acm.timus.ru/problem.aspx?space=1&num=1017思路:动态规划,设计状态:dp[i][j],表示i块砖最高高度为j时的方案数,状态转移方程dp[i][j] += dp[i-1][j-1] + dp[i-j][j-1];,表示总数i块砖最高高度为j时的方案数+=总数i-1块砖在在原创 2015-05-19 22:18:30 · 432 阅读 · 0 评论 -
Ural 2018 The Debut Album
题意:构造一个串,满足以下条件(1)串中只有0和1两个字符、(2)0最多连续m个,1最多连续n个、(3)该串的长度为k,求满足以上条件的串最多有几种链接:http://acm.timus.ru/problem.aspx?space=1&num=2018思路:dp问题,设计状态,dp[i][j][k],表示第i个字符为j时有连续k个字符的可能性。注意点:内存限制不能开dp[50000][原创 2015-05-18 10:14:42 · 684 阅读 · 0 评论 -
Ural 1260 Nudnik Photographer
题意:有n个座位与n个人,每个座位都有对应的编号,分别从1-n,1号座位必须做1号,并且相邻位置的人的编号的差值不能超过2,求让n个人入座的方案数链接:http://acm.timus.ru/problem.aspx?space=1&num=1260思路:暴搜小数据,推规律注意点:超出int范围,用long long以下为AC代码:IDDate原创 2015-05-18 10:04:19 · 380 阅读 · 0 评论 -
Ural 1073 Square Country
题意:要买n平方的土地,可以买的土地必须为某数的平方数,求至少要几块土地链接:http://acm.timus.ru/problem.aspx?space=1&num=1073思路:dp完全背包问题,状态转移方程dp[j] = min ( dp[j], dp[j-sq[i]] + 1 )注意点:无以下为AC代码:IDDateAuthorPro原创 2015-05-18 15:46:20 · 430 阅读 · 0 评论 -
Ural 1353 Milliard Vasya's Function
题意:统计1-1e9中数位和为S的数的个数链接:http://acm.timus.ru/problem.aspx?space=1&num=1353思路:解法一、暴力打表,直接输出表 解法二、数位dp,dp[i][j]表示放到第i个数,和为j的个数注意点:无以下为AC代码:IDDateAuthorProblemLan原创 2015-05-14 23:17:56 · 582 阅读 · 0 评论 -
Ural 1009 K-based Numbers
题意:求长度为n的k进制数的个数,并且其中不能有存在相邻位置都为0的数链接:http://acm.timus.ru/problem.aspx?space=1&num=1009思路:递推/数位dp。转移前一位是否为0的状态的个数注意点:无以下为AC代码:IDDateAuthorProblemLanguageJudgement resul原创 2015-05-14 22:49:59 · 391 阅读 · 0 评论 -
Ural 1119 Metro
题意:在m*n的地图上,有n个点有斜向的路径,已知这些斜向路径的位置,求从(0,0)到(m,n)的最短路径链接:http://acm.timus.ru/problem.aspx?space=1&num=1119思路:简单dp,无斜向路径即路径长为无穷大,转移三个方向的最短距离,dp[i][j] = min ( dp[i-1][j], dp[i][j-1], dp[i-1][j-1] + m原创 2015-05-14 22:42:56 · 437 阅读 · 0 评论 -
HDOJ 1260 ticket
题意:给出n个数,第i个数表示买第i张票的时间,第二行有n-1个数,第i个表示买第i和i+1张票需要的时间,8点开始买票,求要到几点才能买完所有的票链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260思路:基础dp,状态转移方程dp[i] = min ( dp[i-1] + num[i], dp[i-2] + sum[i] ),i表示买第i张票原创 2015-05-11 22:42:54 · 282 阅读 · 0 评论 -
HDOJ 1176 免费馅饼
题意:一个人在坐标5为起点,每秒最多能移动1个单位距离,并且已知在某些时刻某些坐标会掉落一些馅饼,判断这个人最多能接到多少馅饼链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176思路:简单的dp,dp[x][y],x表示时间,y表示坐标位置,状态转移方程:dp[x][y] = max ( dp[i][j-1], dp[i-1][j-1], dp原创 2015-05-11 19:22:28 · 311 阅读 · 0 评论 -
HDOJ 1257 最少拦截系统
题意:一个导弹拦截系统拦截导弹的高度必须不低于前一次的高度,求拦截所有的导弹需要多少套拦截系统链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257思路:求包含所有数的LIS的最少个数,通过数组维护每个LIS的最大值判断注意点:无以下为AC代码:Run IDSubmit TimeJudge Status原创 2015-05-11 22:53:23 · 320 阅读 · 0 评论 -
HDOJ 4597 Play Game
题意:A和B玩一个游戏,有两组卡片,每张卡片有一个点数,两人轮流从任意一组的最左端或者最右端取一张,两人都足够聪明。选取一种最优的方案,使得A获得的点数和最高。链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597思路:区间DP(记忆化搜索),取的方式从两种变成四种,状态转移方程为 ans = max ( ans, sum-dfs(a-1,原创 2014-12-08 22:30:45 · 352 阅读 · 0 评论 -
HDOJ 2067 小兔的棋盘
题意:有一个n*n的棋盘,不穿越棋盘对角线,求从(0,0)到(n,n)的路径总数链接:http://acm.hdu.edu.cn/showproblem.php?pid=2067思路:棋盘dp,递推过程,dp[i][j] = dp[i-1][j] + dp[i][j-1]注意点:因为n较大,导致dp超出ll范围,用大数即可以下为AC代码:Run原创 2015-01-11 09:27:16 · 426 阅读 · 0 评论 -
HDOJ 1025 Constructing Roads In JGShining's Kingdom
题意:在RichCity与PoorCity之间造若干条路,要求路的两边的城市序号要相同,两种城市分别按任意顺序排列在两条直线上,求最多能造几条路链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025思路:最长上升子序列问题,因为数据范围较大,所以需要用nlogn的算法解决,通过二分法查找dp序列中的最长上升序列,并进行替换注意点:当子序列长度原创 2015-01-28 17:21:54 · 339 阅读 · 0 评论 -
HDOJ 4571 Travel in time
题意:给n个城市,m条路径,表示从a->b需要t时间,每个城市有一个满意度si,游览这个城市需要花费ti时间,若经过城市不游览则不需要花费时间,且后访问的城市的满意度必须比前一个城市高。已知起点与终点,求在花费T时间的时限内,能够获得的最大的满意度。链接:http://acm.hdu.edu.cn/showproblem.php?pid=4571思路:先用floyd求出城市之间的最短距离,原创 2014-12-18 19:21:33 · 308 阅读 · 0 评论 -
HDOJ 2159 FATE
题意:给出忍耐度和杀怪数量和升级所需经验,并且已知每只怪的经验和所需的忍耐值,求出是否能升级链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159思路:有忍耐度和杀怪数量两个限制条件,二维背包,并且每种怪物没有数量限制,完全背包,综合就是二维完全背包。状态转移方程为dp[j][l] = max ( dp[j][l], dp[j-num[i].b]原创 2014-11-27 00:03:18 · 427 阅读 · 0 评论 -
vijos P1121 马拦过河卒
题意:链接:思路:注意点:以下为AC代码:原创 2014-11-18 19:48:10 · 532 阅读 · 0 评论 -
UVA 11078 Open Credit System
题意:链接:思路:注意点:原创 2014-11-19 18:48:36 · 335 阅读 · 0 评论 -
vijos P1133 装箱问题
题意:链接:原创 2014-11-18 16:57:36 · 352 阅读 · 0 评论 -
BNUOJ 44583 Star Trek: First Contact
题意:自身有总能量a,敌方血量为b,有n枚导弹,发射时分别会消耗自身vi的能量,对对方造成wi的伤害,判断是否能用这些弹药摧毁敌舰链接:http://www.bnuoj.com/v3/problem_show.php?pid=44583思路:妥妥的裸背包问题,模板随便一搞就行注意点:以下为AC代码:UsernameRunIDID原创 2014-12-28 00:13:41 · 472 阅读 · 0 评论 -
CodeForces 13C Sequence
题意:给出一个序列,将该序列中的每一个数分别变化ki,使得这个数字成为一个非递减序列,求min( sum( abs ( ki ) ) )链接:http://codeforces.com/problemset/problem/13/C思路:先对该序列排序,求通过dp维护变化最少的情况,第一维为第i位的变化情况,第二维为第i位数字变成第j大的数字至少要变化的数量,类似背包将第一维处理成dp原创 2015-02-24 22:10:59 · 489 阅读 · 0 评论 -
HDOJ 1069 Monkey and Banana
题意:在高度为h处有一串香蕉,猴子想要拿到它,但是他的高度不够,需要通过长方体木块的堆积才能拿到,已知有n钟长宽高分别为x,y,z的长方体木块,每种木块的个数足够多,判断这些木块可以堆叠的最大高度链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069思路:动态规划。对每个长方形进行六种旋转,在对底上的中一条边进行排序,求出最大可能。注意点:旋原创 2015-05-11 10:01:55 · 342 阅读 · 0 评论 -
HDOJ 1114 Piggy-Bank
题意:有n种价值和重量分别为v和w的硬币,存钱罐本身的质量是W-empty,装满硬币后最大允许质量是W-full,求这个存钱罐中最多能放多少价值的硬币链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114思路:基础的完全背包dp,转移方程dp[j] = min ( dp[j], dp[j-wei[i]] + val[i] )注意点:无原创 2015-05-11 10:45:06 · 336 阅读 · 0 评论 -
HDOJ 1087 Super Jumping! Jumping! Jumping!
题意:在n个点中往后移动,有两个条件:(1)只能向后移动,不能向前移动。(2)只能从权值小的节点移动到权值大的节点链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087思路:简单的lis类型dp,转移方程dp[i] = max ( dp[i], dp[j] + num[i] )注意点:无以下为AC代码:Run原创 2015-05-11 10:38:13 · 336 阅读 · 0 评论 -
HDOJ 1074 Doing Homework
题意:有n门课的作业,每门课的作业都有必须花费时间以及截止期限,到截止期限还没做完的作业每天要扣一分,判断怎么安排作业顺序使得扣分最少链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074思路:n的范围很小(n注意点:无以下为AC代码:Run IDSubmit TimeJudge Status原创 2015-05-11 10:18:56 · 328 阅读 · 0 评论 -
HDOJ 2078 复习时间
题意:有n门要复习的功课,使得复习难度越来越低,并且两门课之间难度差的平方和尽可能的大,求要怎么对要复习的功课进行排序。链接:http://acm.hdu.edu.cn/showproblem.php?pid=2078思路:dp,对难度排序,转移方程dp[i][j] = max ( dp[i][j], dp[i-1][j-k] + abs ( num[j] - num[j-k] ) * a原创 2015-04-12 08:50:08 · 381 阅读 · 0 评论 -
CodeForces 148E Porcelain
题意:第一行给出两个数n,m,n表示下面有n行数据,每行数据可以从前或从后去若干个数,一共取m个数,求取出的n个数和最大值链接:http://codeforces.com/problemset/problem/148/E思路:预处理背包,将每行数据预处理,求出每行处理成max_n = ( left_sum_n, right_sum_n, left_right_sum_n ),后面按正常背包原创 2015-02-27 17:08:33 · 406 阅读 · 0 评论 -
CodeForces 166E Tetrahedron
题意:有一个整四面体,从顶点D出发,经过k个点恰好回到D点,求路线数量链接:http://codeforces.com/problemset/problem/166/E思路:预处理DP,dp[n][4],第一维表示经过的步数,第二维表示点的序号(1,2,3,4分别对应A,B,C,D),dp[i+1][k] = dp[i][0] + dp[i][1] + dp[i][2] + dp[i][3原创 2015-02-27 18:06:18 · 513 阅读 · 0 评论 -
CodeForces 189A Cut Ribbon
题意:给出四个数n,a,b,c,将长度为n的木棍恰好分割成若干段长度分别为a,b,c的小段,求最多能有几段链接:http://codeforces.com/problemset/problem/189/A思路:dp,近似完全背包,加一个判断条件dp[i-k] != 0注意点:无以下为AC代码:#AuthorProblemLangVer原创 2015-02-27 17:49:33 · 625 阅读 · 0 评论