
DP动态规划
neofung
这个作者很懒,什么都没留下…
展开
-
一道上海交大研究生入学考试试题:物以稀为贵
1 2 3 4 5 67 8 9 0 说某移动电信运营商开发了一个名为“争霸”的游戏,为鼓励用户参与,凡签约用户均可获得前三位为888的手机号码,但这样的话就有10的8次方种可能,现在给出一种限制条件减少号码数量,就是两个相邻号码之间的关系必须满足象棋里的“将步”即:给你前三位都是888 后面8位是上面的数字 每个数的相邻只有有限个数字比如888原创 2013-02-26 18:42:10 · 1307 阅读 · 0 评论 -
POJ2342 HDU1520 Anniversary party
又学到东西了,树形DP。参考了网上的代码,使用的是孩子,兄弟,父节点的模式建树。node[idx].present表示的是第idx个节点参加的时候的最优,node[idx].not_present表示的是第idx个节点不参加的时候的最优。/************************************************************************原创 2012-04-26 19:19:50 · 1142 阅读 · 0 评论 -
POJ3342 HDU2412 Party at Hali-Bula
同上一题一样,树形DP经典题这里的结构体内我们加多两个变量,表示idx节点出现与否时,以它为根的树的最优值是否唯一而这两个变量的的更新可以看代码中的dfs/******************************************************************************* # Author : Neo Fung # Email :原创 2012-04-26 20:24:54 · 1062 阅读 · 0 评论 -
ZOJ2771 Get Out of the Glass
很简单的DP,但是哥被坑了。。。交界面可以分为上下两部分,只要知道上表面的入射光线是从哪个下表面射过来的,下表面的入射光线是从哪个上表面射过来的,就好办了。注意,题目没有要求最后只能从上面出来,哥就是这里被坑了/******************************************************************************* # Autho原创 2012-04-13 19:27:47 · 688 阅读 · 0 评论 -
ZOJ1425 POJ1692 Crossed Matchings
很好的dp题。dp[i][j]表示的是a数组的第i个位置与b数组的第j个位置时最大的交叉匹配数。/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modi原创 2012-03-22 20:45:10 · 1087 阅读 · 0 评论 -
ZOJ1499 POJ1239 HDU1511 Increasing Sequences
非常经典的DP题!必须要好好研究!需要两次dp,第一次dp正向,dp[i]的值x表示的是到了i,i前面的x个字符(包含i)组成数值后,前i个字符符合上升队列,且x为最大。则我们可以知道前i-dp[i]个也符合上升队列。第一次dp求出符合题目要求的最后个数字的值为最小的值,注意这里说的是值而不是长度!因为对于如下测试数据1234050求出来符合要求的值是50,但是正确划分是1原创 2012-04-06 19:51:21 · 1801 阅读 · 0 评论 -
POJ1157 LITTLE SHOP OF FLOWERS
挺简单的DP。DP[x][y]表示的是到了第x束花插到y花瓶的最大价值,则可知x束花只有插到y花瓶和不插到y花瓶两种状态,由此可知状态转移方程为dp[x][y]=max(dp[x][y-1],dp[x-1][y-1]+value[x][y])以下就是全部代码,不优化了/***********************************************************原创 2012-03-16 20:12:18 · 603 阅读 · 0 评论 -
ZOJ1536 Labyrinth
及其恶心的一道题。。。其实很简单的DP,DP[x][y][z],表示的是在第z步到达(x,y)的方式有多少种,则我们可以有DP[x][y][z]=DP[x-1][y][z-1]+DP[x][y-1][z-1]+DP[x+1][y][z-1]+DP[x][y+1][z-1]为什么说恶心呢,是因为结果太大了,连long long都放不下!只能用大数加法/**********原创 2012-03-31 19:51:40 · 632 阅读 · 0 评论 -
POJ2479 Maximum sum
输入数据真变态。。。首先两个子数组长度必须要大于零,其次就是输入数据中有全负数的数据。。。left_dp保存的是到达i的时候,往左的最大子数组和;right_dp保存的是到达i的时候,往右的最大子数组和。left_dp和right_dp的求法就是最大子数组和求法。则结果必然是max{left_dp[i-1]+right_dp[i]}/**********************原创 2012-03-14 18:47:52 · 583 阅读 · 0 评论 -
ZOJ1524 POJ1297 Supermarket
DP,类似于LCS,用滚动数组实现/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-03-29 21:02 # Filen原创 2012-03-29 21:00:17 · 1054 阅读 · 0 评论 -
ZOJ2501 POJ1976 A Mini Locomotive
简单的DPmax_coach表示每节小火车头最多可以拉多少节车卡, passenger[i]保存的是从i往前连续max_coach节车卡的人数, 方便运算.dp[x][y]表示对于第x节车卡, 用了y个火车头后可以拉的最多人数, 则状态转移方程为dp[x][y]=max(dp[x-1][y], dp[x-max_coach][y-1]+passenger[x]);dp[x-1]原创 2012-02-24 19:52:09 · 992 阅读 · 0 评论 -
ZOJ1894 POJ2465 Adventures in Moving - Part IV
典型的DP题,dp[i][j]表示的是到了第i个站的时候,总共油缸里还剩下j油的最小费用。记得把起始和终点都要列进去。输入真恶心/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.原创 2012-04-16 22:10:36 · 719 阅读 · 0 评论 -
ZOJ2834 Maximize Game Time
非常好的树形DP题,调戏了我两个晚上啊。。。详细解释看代码注释吧。。。没有力气说了。。。/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 20原创 2012-04-28 20:10:42 · 800 阅读 · 0 评论 -
ZOJ1880 POJ2576 Tug of War,DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=880http://poj.org/problem?id=2576没有什么难度的DPdp[x][y]表示的是对于用x个人能否到达重量y注意只有一个人的情况,为此WA了两次/*****************************************原创 2012-08-03 20:41:04 · 1746 阅读 · 4 评论 -
POJ2478 Farey Sequence,欧拉函数
挺不错的数论题。给定一个数n,求在[1,n]这个范围内两两互质的组合数。则问题可以转化为给定一个数n,比n小且与n互质的数的个数。这个就是典型的欧拉函数问题了。关于欧拉函数可以看这里:http://blog.youkuaiyun.com/leolin_/article/details/6642096 。在这里需要利用两个性质。第一,大于1的质数x的欧拉函数值为x-1,1的欧拉函数值为1。第原创 2012-07-17 18:54:30 · 3448 阅读 · 0 评论 -
HDU1284 钱币兑换问题,背包问题
最经典的背包问题/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-06-13 16:07 # Filename: acm.cp原创 2012-06-22 13:01:48 · 1254 阅读 · 0 评论 -
HDU2069 Coin Change,背包
其实是很简单的背包问题,但是一开始不小心忘了看条件。题目要求的是到达给定的价值,使用的硬币不超过100枚的情况下,总路径。。。/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com原创 2012-06-22 12:54:11 · 1821 阅读 · 3 评论 -
ZOJ3369 Saving Princess,DP
典型DP题,这里有个技巧用三维数组减少内存消耗/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-06-18 20:03 # Filen原创 2012-06-18 20:00:55 · 825 阅读 · 0 评论 -
ZOJ3070 POJ2978 Colored stones,压缩状态DP
今晚和女友吵架,心情超不爽,我这个博客开了这么久,也许她也从来没有上来看过吧/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-0原创 2012-06-06 21:00:21 · 970 阅读 · 0 评论 -
ZOJ2096 Door to Secret, 双调DP
和上一题类似的双调DP,但是有点不一样你可以随便选择一个点为初始点,先往右敲其中的一些点,敲到最右边的点后,再往左敲余下的点同时题目要求,往右走的最后一次敲,和往左走的第一次敲,是连续的所以类似于ZOJ 2581,不过我们这次是从最右端开始,非为两个小人两条路径WA了一次,因为正无穷开小了。。。/*************************************原创 2012-05-18 19:49:17 · 2785 阅读 · 2 评论 -
ZOJ2581 POJ2677 Tour,双调DP
传说中的双调DP问题。要走完全部的点,且要来回的话,我们可以简化为有两个小人,都是从最右边出发的。我们假设小人中有快的小人和慢的小人,如果慢的小人在一步中超过快的小人,则只是交换了角色。dp[i][j]指的就是快的人走到i,慢的人走到j的最短距离。假如现在快的小人走到i-1,慢的小人走到j,则此时就只有两种情况1. 快的小人走到i,则有dp[i][j]=min(dp[i][j]原创 2012-05-17 21:37:50 · 1950 阅读 · 1 评论 -
ZOJ3310 Unrequited Love
挺简单的一道DP,我分为两次来做。第一次是第一个mm收到情书,则最后的mm肯定不能要情书的。第二次DP是第一个mm没有收到情书,最后一个mm取最优。/******************************************************************************* # Author : Neo Fung # Email : neosfun原创 2012-05-03 19:13:47 · 1026 阅读 · 0 评论 -
POJ1837 Balance
这题先补全物理学中关于力矩的概念...属于半穷举吧...出于解题方便, 我们把中心轴往负轴移动. 由于我们知道在左端最大极限的力矩为15*20*20=6000, 所以要移动6000的单位.dp[x][y]表示的是, 第x个砝码挂上后, 到达y有多少种可能.可知转移方程为dp[i][k+w[i]*h[j]]+=dp[i-1][k];#ifdef _MSC_原创 2012-02-15 19:44:57 · 432 阅读 · 0 评论 -
ZOJ1717 POJ2030 The Secret Number
挺烦的一道DP, 如果用DFS来做的话果断TLE...dp[x][y]表示的是以(x,y)字符结尾的最长字符串, 则可知状态只能从(x-1,y), (x,y-1)得到./******************************************************************************* # Author : Neo Fung # Ema原创 2012-02-23 20:15:58 · 1018 阅读 · 0 评论 -
POJ3267 The Cow Lexicon, DP
DP. 其中dp[i]表示原字符串str前i个字符(不含str[i])需要删去的最少字符数.对于i, 枚举每一个word, 从i开始由后往前比较./******************************************************************************* # Author : Neo Fung # Email : ne原创 2012-02-14 19:39:29 · 671 阅读 · 0 评论 -
URAL1119 Metro
没什么好说的,动态规划吧,注意到达每一个点可以从三个方向(如果有斜径的话)/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-12原创 2011-12-03 20:18:42 · 696 阅读 · 0 评论 -
URAL1009 K-based Numbers,简单DP
很简单的DP题,对于K进制,如果运算到第i位,则第i位只有k-1可以选择,然后分i-1位是0还是非零讨论。/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # La原创 2011-11-22 21:01:46 · 1008 阅读 · 0 评论 -
ZOJ3471 Most Powerful,状态压缩DP
这题一开始没有什么想法,后来只能上网看别人的解题报告,看到了状态压缩DP这种做法,好神奇。。。对于有n个原子,在任何一个状态下,每个原子只有两种状态,要么就是已经被消灭,要么就是还余下来。我们用0表示某个原子还存在,用1表示某个原子被消灭了,这样我们就可以用0到2^n-1个数原创 2011-10-17 08:54:03 · 844 阅读 · 0 评论 -
ZOJ1149 POJ1014 HDU1059 Dividing,多重背包问题
很经典的多重背包问题,大家可以看看《背包九讲》里面的第三讲。/******************************************************************************* # Author : Neo Fun原创 2011-10-02 20:44:51 · 1353 阅读 · 0 评论 -
HDU2037 今年暑假不AC,动态规划
这题一般都是用贪心算法来做,因为我的动态规划不熟练,所以这题我就用动态规划做了。由于时间的特殊性,所以我们先要对时间进行排序,根据节目的先后排序后才能进行DP。/*****************************************************原创 2011-08-29 18:20:11 · 2518 阅读 · 1 评论 -
ZOJ3171 The Hidden 7's,DP版
这题算是非典型的DP 吧。可以看一下代码中的注释。/******************************************************************************* # Author : Neo Fung # Email :原创 2011-09-13 12:54:29 · 834 阅读 · 1 评论 -
ZOJ3627 POJ1631 HDU1950 Bridging Signals,O(N*logN)版最长上升子序列问题
这题如果用普通的最长上升子序列来做的话因为时间复杂度为O(n^2),肯定会超时,所以这里用的是O(N*logN)的方法,代码带有详细解释了。/*************************************************************原创 2011-09-08 20:29:49 · 1349 阅读 · 0 评论 -
ZOJ1733 POJ1458 Common Subsequence,经典DP问题
很经典的DP问题,问最长共同子字符串。DP[i][j]存放的是对于A字符串和B字符串,当A到达 i 和B到达j 时,最大公共字符串的长度。我们定义temp,如果A的第i个字符和B的第j个字符相等,则temp为1,否则为0。则对于DP[i][j],到达DP[i][j]的可能有三原创 2011-09-03 16:44:20 · 796 阅读 · 0 评论 -
ZOJ1366 POJ1276 Cash Machine 经典多重背包问题
这是一条非常经典的题,是0/1背包问题的变种,详细可以看看《背包9讲-多重背包问题》。简单说一下,对于n1 D1 n2 D2 ... nN DN,n为D的数量,则可以把n分解为k1=1,k2=2,k3=4,k4=8...km,且k1+k2+...km=n,其中k1,k2...km原创 2011-07-18 21:11:05 · 1411 阅读 · 0 评论 -
POJ1836 Alignment DP最长队列问题
关于这题一眼看上去貌似是最长队列问题。题目本意是指,给出一个有n个元素的队列,从里面踢掉最少的元素,使得队伍中的元素往左看或者往右看,都可以看到队列的端点。对于WA,我给一个下面的数据,看看你们结果是怎样93 4 5 1 2 5 4 3 3正确答案应该是3。因为两个5都可以留下原创 2011-07-20 19:30:31 · 969 阅读 · 0 评论 -
URAL1225 Flags, DP
动态规划,类似于斐波那契数列,不多说了/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-12-07 20:45 # F原创 2011-12-07 20:44:55 · 910 阅读 · 0 评论 -
ZOJ3211 Dream City
很经典的DP问题/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-01-08 20:00 # Filename: ZOJ321原创 2012-01-08 20:01:14 · 606 阅读 · 0 评论 -
ZOJ2297 Survival,压缩状态DP
算是经典的压缩状态DP吧,枚举每一种状态,再枚举对手/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2012-01-05 21:22原创 2012-01-05 21:21:16 · 578 阅读 · 0 评论 -
ZOJ1093 HDU1069 Monkey and banana
先把一个箱子分解为三个箱子,按照底面的长宽排序后,按照就最长公共子序列的方法求得/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified:原创 2012-01-05 19:53:37 · 1034 阅读 · 0 评论 -
ZOJ1107 HDU1078 FatMouse and Cheese
这一题要读懂题,关键点有下面几个1. 从一个点跑的话,k步是不能转弯的,也就是只有停下来才能转弯2. 停下来后的点的食物要求比上一个点的食物要多,不要求跑的过程中经历的食物要比上一个点的多/******************************************************************************* # Author : N原创 2012-01-05 19:04:55 · 1125 阅读 · 0 评论