
+DP
文章平均质量分 68
hcbbt
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #261 (Div. 2)[ABCDE]
Codeforces Round #261 (Div. 2)[ABCDE]ACM题目地址:Codeforces Round #261 (Div. 2)A - Pashmak and Garden题意: 一个正方形,它的边平行于坐标轴,给出这个正方形的两个点,求出另外两个点。分析: 判断下是否平行X轴或平行Y轴,各种if。代码:原创 2014-08-16 11:24:15 · 2477 阅读 · 0 评论 -
hdu 2550 百步穿杨(大水题)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2550又是大水题。。。杭电果然名不虚传。。。不过我还是跟着E.star大神的脚步走上去吧。。。#include#include#define MAXN 35using namespace std;struct S{ int n, l;};bool cmp(S a, S b){原创 2013-05-11 01:26:29 · 2173 阅读 · 0 评论 -
UVa 111 History Grading (最长公共子序列)
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=114&problem=47经典dp,最长公共子序列。需要注意的是,输入的不是原序列,而是在哪个位置。原来以为刚开始那组是原系列,老是过不了sample,一直以为是在学生答的那组出错,网上找原创 2013-05-13 19:07:36 · 1616 阅读 · 0 评论 -
uva 10405 - Longest Common Subsequence(最长公共子序列)
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1346经典的LCS水题。。。用来入门是极好的。也是我的第一道dp题。但是一个非常坑的点是它的数据好像有单数组的,这意味着如果用while(gets(a))这样去做循环的话可能会出错,必须用两原创 2013-05-13 19:22:44 · 1290 阅读 · 0 评论 -
rqnoj 26 合唱队形 (dp lis)
最近好颓废,都没什么刷题,虽然老是抱着算法书看,其实看没多少进去。。。而且上周特别忙,什么建模,还有个朋友叫我帮弄下视频什么的,翘了几节课,熬了几个夜,加上什么院运会,实在够呛,今天终于解放了,虽然四级也快来了,也要分散一些重心,总之我开始重新开始刷题了。。。这题是上一周做的。。。今天又做了一遍,换了个好点的算法。。。凡是我做的题都是水题,所以这也是个水题,dp水题,初级LIS。第原创 2013-05-29 22:14:36 · 1463 阅读 · 0 评论 -
rq160 竞赛真理 dp水题。
水题啊水题,我老是被水题虐,果然我还是弱菜啊。。。明明想出动态转移方程了,是01背包的变形,分组背包下就可以了,我好像想复杂了,在循环里面各种取最大值最小值。。。上传上去总输出无结果,本地完全没问题的啊,我各种改数组,去头文件什么的,没有丝毫变化。。。Orz太打击人了。。。最后还是用分组数组A过。。。#include #define maxn 1080010int dp[max原创 2013-06-01 11:52:11 · 1083 阅读 · 0 评论 -
hdu1016-Prime Ring Problem 素数环
Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionA ring is compose of n circles as shown in diagram. Put natural nu原创 2013-04-24 23:56:06 · 1167 阅读 · 0 评论 -
hdu 1009 FatMouse' Trade(贪心水题)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1009水题必须的,果断用struct排序再计算,第一次循环条件搞错WA了一次。。。#include#include#define MAXN 10000using namespace std;struct Room{ int j, f; double value;};Room r[M原创 2013-05-11 00:41:40 · 1362 阅读 · 0 评论 -
UVa 10192 - Vacation(LCS水题)
题目:http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1133水题,但有个坑点。。。坑在循环判断条件里面,如果用scanf读入来做判断条件的话就会超时,如果用gets就没问题。。。真不知道是为什么,以前一直听说scanf挺快的,比cin快多了,没想到这次tle是因为sca原创 2013-05-13 19:36:52 · 1230 阅读 · 0 评论 -
UVa 10066 - The Twin Towers(LCS水题)
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1007水题。。。我甚至连题目都没看完。。。几乎没有坑点,纯水。。。#include#includeconst int maxn = 110;int main(){ int a[原创 2013-05-13 19:27:30 · 1328 阅读 · 0 评论 -
uva 562 Dividing coins 分钱 dp
题意:给你一些硬币,求出分成两堆,使得两堆的差最小,求出差。用dp[]表示能否分到这么多钱,由于一种分法就是一堆空一堆总和,所以dp[0]一定为true,然后的思想就是如果dp[j - coin[i]]可以分到,那dp[j]肯定能分到。代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt*原创 2013-09-21 21:07:04 · 1164 阅读 · 0 评论 -
UVA 348 Optimal Array Multiplication Sequence 最优矩阵链乘 dp经典
这么久了还在dp入门这折腾orz。题意:最优矩阵链乘,给出n个矩阵的大小,求出计算顺序,让计算量最小。记忆化搜索,状态转移公式为 dp(begin, end) = { dp(begin, k) + dp(k + 1, end) + x[begin] * y[k] * y[end] | begin 代码:/** Author: illuz * Blog:原创 2013-09-27 16:56:02 · 2067 阅读 · 2 评论 -
UVA 10534 Wavio Sequence LIS(nlogn实现)
题意:求一个序列,找出先递增n个后递减n个的最长序列。其实就是LIS的变形,跟以前的一题打导弹的题目差不多,不过这次的范围是10000,如果用以前那种朴素的DP算法,复杂度是O(n*n)果断会超时。。。于是去学了nlogn的求LIS算法,其实就是维护一个递增序列,每次与序列最后面数字比较,如果能放后面就放后面,不能的话在前面二分找到适合的差不多的数字给换掉。代码:#includ原创 2013-11-08 09:16:12 · 1592 阅读 · 0 评论 -
hdu 1064 Financial Management(超级大水题)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1064太水了。。。简直可以说是尽次于A+B的水题了。。。我都不知道如果我WA了我会多丢脸。。。#includeint main(){ double sum = 0, m; while (scanf("%lf", &m) != EOF) sum += m; printf("$%.2原创 2013-05-11 01:09:31 · 1330 阅读 · 0 评论 -
hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明
题目:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11313湖师大的比赛,见我的另一篇水题题解,这里要说的是我YY出来的C题,无重复元素序列的最长公共子序列。用常规的做法会超时,于是我YY出来一个方法,记录第一组各个数字的位置,读取第二组,把第一组出现的相同数字的位置放入序列,没出现就不放。。。然后就转成LIS题目原创 2013-06-16 22:20:13 · 1943 阅读 · 0 评论 -
rqnoj 496 [IOI1999]花店橱窗布置 (简单dp)
很水,我却做了很久,唉,细节的东西没处理好。。。又要顺序又要最大的,看上去感觉就和LCS一样,很容易想出状态转移公式:dp[i,j] = max{dp[i - 1][j - 1] + a[i][j], dp[i - 1][j]}.AC代码如下:#include const int maxn = 100 + 10;const int min = -1000000;int a[max原创 2013-05-31 14:22:40 · 2002 阅读 · 0 评论 -
HDU 3480 Division (斜率DP)
HDU 3480 Division (斜率DP)ACM题目地址: HDU 3480 Division题意: 给定一个大小为n的集合,要求将集合分成m个子集合,每个集合都有权值,权值为最大值减最小值的平方。分析: from ZeroClock:dp[i][j+1] = min{dp[k][j] + (arr[i] - arr[k+1]) ^2} =原创 2014-09-20 20:58:43 · 1347 阅读 · 0 评论 -
HDU 1565 方格取数(1) (状态压缩DP)
HDU 1565 方格取数(1) (状态压缩DP)ACM题目地址: HDU 1565 方格取数(1)题意: 中文。分析: dp[i][j]表示前i行状态j的最优解。 先预处理出符合条件的数,17000+个(n在20以内)。 不过感觉复杂度挺高的会T,但是却能A。 这题的正解应该是最小割,回头补下。代码:/** Author原创 2014-09-20 20:47:57 · 1413 阅读 · 0 评论 -
HDU 3507 Print Article (斜率优化)
HDU 3507 Print Article (斜率优化)ACM题目地址: HDU 3507 Print Article题意: 给定一个长度为n的序列,和一个常数m,我们可以将序列分成随意段,每段的权值为sum(arr[i]) + C(x分析: from:亟隐's blogf[i]=min(f[k]+(sum(i)-sum(k))^2 )+m原创 2014-09-19 19:58:02 · 1542 阅读 · 0 评论 -
POJ 3017 Cut the Sequence (单调队列优化DP)
POJ 3017 Cut the Sequence (单调队列优化DP)ACM题目地址: POJ 3017 Cut the Sequence题意: 将一个由N个数组成的序列划分成若干段,要求每段数字的和不超过M,求【每段的最大值】的和 的最小的划分方法,输出这个最小的和。分析: 方程是:dp[i] = min(dp[j]+maxsum[j+1][i])原创 2014-09-18 16:50:17 · 3160 阅读 · 0 评论 -
HDU 2993 MAX Average Problem (斜率优化)
HDU 2993 MAX Average Problem (斜率优化)ACM题目地址: HDU 2993 MAX Average Problem题意: 给一个长度为 n 的序列,找出长度 >= k 的平均值最大的连续子序列。分析: 斜率优化的例题。 这里有篇博客给论文里面的分析部分上色了,还不错:http://www.cnblogs.com/Free原创 2014-09-18 16:41:20 · 1795 阅读 · 1 评论 -
ACdreamOJ 1154 Lowbit Sum (数位dp)
ACdreamOJ 1154 Lowbit Sum (数位dp)ACM题目地址:ACdreamOJ 1154题意:long long ans = 0;for(int i = 1; i n; i ++) ans += lowbit(i)lowbit(i)的意思是将i转化成二进制数之后,只保留最低位的1及其后面的0,截断前面的内容,然后再转成10进制原创 2014-07-31 09:49:04 · 1975 阅读 · 0 评论 -
HDU 2294 Pendant (DP+矩阵快速幂降维)
HDU 2294 Pendant (DP+矩阵快速幂降维)ACM题目地址:HDU 2294 Pendant题意: 土豪给妹子做首饰,他有K种珍珠,每种N个,为了炫富,他每种珍珠都要用上。问他能做几种长度[1,N]的首饰。分析: 1 ≤ N ≤ 1,000,000,000简直可怕。 首先想dp,很明显可以想到: dp[i][j] = (k-(j-1))原创 2014-08-04 00:36:22 · 2614 阅读 · 2 评论 -
SPOJ MYQ10 10649. Mirror Number (数位dp)
SPOJ MYQ10 10649. Mirror Number (数位dp)ACM题目地址:SPOJ MYQ10 Mirror Number题意: 求[a,b]中镜像回文的个数。 0 分析: 看到题目和数据范围就知道是数位dp了。 很明显镜像回文只有0,1,8,跟回文的一题一样,在dfs的时候得开个辅助数组记录前面已经选择的数字。 注意还得去掉前原创 2014-08-02 16:34:26 · 1790 阅读 · 0 评论 -
LightOJ 1205 - Palindromic Numbers (数位dp)
LightOJ 1205 - Palindromic Numbers (数位dp)ACM题目地址:SPOJ MYQ10 Mirror Number题意: 求[a,b]中回文的个数。分析: 是SPOJ MYQ01的简单版...其实有非递归方法的。代码:/** Author: illuz * Blog: http:原创 2014-08-02 20:48:01 · 2021 阅读 · 0 评论 -
HDU 3555 Bomb(数位DP)
HDU 3555 Bomb(数位DP)ACM题目地址:HDU 3555题意: 问(0, n]里面有几个数有'49'这个子串。分析: 裸数位DP。 直接用DFS做。 就是输入输出比较坑,杭电貌似都要用__int64。代码:/** Author: illuz * File: 3555.cpp* Cr原创 2014-07-26 19:08:00 · 4564 阅读 · 2 评论 -
HDU 2089 不要62(数位DP,三种姿势)
HDU 2089 不要62(数位DP,三种姿势)ACM题目地址:HDU 2089题意: 中文题意,不解释。分析:100w的数据,暴力打表能过先初始化dp数组,表示前i位的三种情况,再进行推算直接dfs,一遍搜一变记录,可能有不饥渴的全部算和饥渴的部分算情况,记录只能记录全部算(推荐看∑大的详细题解Orz)代码: 1. 暴力 (以前写的)原创 2014-07-26 16:00:55 · 9266 阅读 · 8 评论 -
UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集
11825 - Hackers' Crackdown 状态压缩 dp 枚举子集ACM题目地址:11825 - Hackers' Crackdown题意: 有一个由编号0~n-1的n台计算机组成的网络,一共有n种服务,每台计算机上都运行着全部服务,对于每台计算机,你可以选择停止一项服务,这个行为会导致与这台计算机和与他相连的其他计算机上的这项服务都停止(原来已经停止的继续原创 2014-06-27 21:35:21 · 2016 阅读 · 0 评论 -
UVA 10051 Tower of Cubes 方块之塔 类LIS DP
题意:给出n个方块各个面的颜色,且给出的方块重量是递增的,叠方块的时候,重的方块要放在下面,接触的面颜色必须一样,求最长能叠几个方块。题目和LIS很像,可以用LIS做,就是判断时候多了些颜色的判断,所以就直接把一个方块分成6个状态,分别是每个面朝上。然后用和LIS差不多的方法做。代码:/** Author: illuz * Blog: http:原创 2013-11-08 09:21:21 · 1516 阅读 · 0 评论 -
UVA 10651 Pebble Solitaire 鹅卵石摆放 记忆化搜索+DFS+记忆化搜索
题意:有12个坑,里面有些鹅卵石,游戏规则:如果有连续的两个鹅卵石,且旁边有个空坑,那可以把旁边的那个鹅卵石跳过空坑中间那个鹅卵石放到空坑里面,而中间那个鹅卵石就被去掉了。只有12个坑,状态为2^12,才4000多个,所以用stl或是位运算去储存都可以,然后DFS。我这里用的是位运算+记忆化搜索,好像没有记忆化也不会超时 = =PS:这就是传说中的状态压缩?代码:/**原创 2013-11-08 09:28:39 · 1778 阅读 · 0 评论 -
UVA 10306 e-Coins 电子硬币 完全背包
题意:一种新的硬币,它的价值的计算方法为sqrt(x*x+y*y),x和y为所有硬币的对应的价值的和,求出最少需要几个硬币能构成总面值s。完全背包,dp[i][j]表示达到x为i,y为j时需要的最少硬币个数。代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt* File:原创 2013-11-08 15:13:32 · 1417 阅读 · 0 评论 -
最长回文子串 HDU3068 POJ3974 CF.7D
最长回文子串 HDU3068 POJ3974 CF.7D原创 2014-02-06 19:06:15 · 3278 阅读 · 0 评论 -
CodeForces 149D 括号染色问题 dp+dfs好题
题意:给出一串已经匹配好的括号,现在要给它们上色,每个括号可以选择蓝色,红色,不上色三种情况,但是相邻的括号颜色不能相同,(可以同无色),每一对匹配的括号都有且仅有一个括号染色。这题想了n久,今天做了半天终于给A掉了,感动得泪流满面。。。题意不难理解,就是要想好久,开始没有思路,不知道如何做,然后偷偷看了一下别人的提示,说用dp[l][r][lc][rc]四维的数组来记录状态,于是就按这个原创 2013-12-12 20:36:07 · 5195 阅读 · 2 评论 -
六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)
问题描述: 连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。 比如例如给定序列: { -2, 11, -4, 13, -5, -2 } 其最大连续子序列为{ 11, -4, 13 },最大和为20。=================================================原创 2013-08-28 21:13:53 · 22442 阅读 · 18 评论 -
NYOJ 422 字串和之差
题目虽然是中文的,但说的不是很清楚,求的是连续子序列和的绝对值的最大值和最小值,然后求两个绝对值的差。刚开始还以为是最大连续子序列和的问题,发现不一样,想了一会样例,然后看了discuss后才理解了题意 = =。分析:这题考察的是对前n项和的理解,因为要求连续子序列和,某连续子序列和[a,b]其实就是前b项和-前a-1项和的差。而求最大值最小值就是求前b项和与前a-1项和的差最小,原创 2013-08-29 20:03:30 · 1718 阅读 · 0 评论 -
UVA 507 Jill Rides Again 最大子序列和
很裸的最大子序列和。具体算法分析见这里。代码: /* * Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt * File: uva507.cpp * Lauguage: C/C++ * Create Date: 2013-09-05 00:09原创 2013-09-06 21:37:17 · 2334 阅读 · 0 评论 -
UVA 108 Maximum Sum 最大连续子矩阵和
题意:给出n*n的矩阵,求出里面子矩阵的和的最大值。这题是最大连续子序列的应用,序列是一维的,矩阵是二维的,所以我们可以把矩阵转换为一维的来算。也就是枚举矩阵的连续几行的合并,这样就转换为一维的了,再用最大子序列的算法去求,更新最大值就可以了。代码: /* * Author: illuz * Blog: http://blog.csdn原创 2013-09-06 21:43:18 · 2971 阅读 · 0 评论 -
UVA 10827 Maximum sum on a torus 可循环的最大连续子矩阵
这题其实是uva 108的拓展,就是给出的矩阵中子矩阵的定义变成可循环的,比如下面这样是一个3*3的子矩阵:1-100-423-2-3241-1503-2原创 2013-09-06 23:24:31 · 2031 阅读 · 0 评论 -
UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
题意:给出几个多维的箱子,如果箱子的每一边都小于另一个箱子的对应边,那就称这个箱子小于另一个箱子,然后要求能够套出的最多的箱子。要注意的是关系图的构建,对箱子的边排序,如果分别都小于另一个箱子就说明是箱子小于,重载然后就是正常的dp最长路的搜索了。代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/原创 2013-09-20 11:34:08 · 2230 阅读 · 0 评论 -
UVA 674 Coin Change 换硬币 经典dp入门题
题意:有1,5,10,25,50五种硬币,给出一个数字,问又几种凑钱的方式能凑出这个数。经典的dp题。。。可以递推也可以记忆化搜索。。。我个人比较喜欢记忆化搜索,递推不是很熟练。记忆化搜索:很白痴的算法,直接交给下一层去算,算完记录下来以免之后重复算。代码:/** Author: illuz * Blog: http://blog.c原创 2013-09-21 10:09:19 · 8215 阅读 · 0 评论