动态规划(dp)
文章平均质量分 77
Flintx
鲜衣怒马少年时
展开
-
POJ 2599 Largest Rectangle in a Histogram(DP&单调栈)
题目可以戳这里题意:连续输入n个紧挨着的宽度为1的矩形高度,求组成矩形的最大面积。分析: 这题是个好题,迄今为止我已经见到过四种解法了,最容易想到的有dp与栈操作,此外还有单调队列和斜率优化的方式,综合时间空间与代码实现难度而言,这里我推荐dp大法。 此题最关键的地方便是能否想到用边界来划分区域,只要我们确保第i个矩形的左边界与右边界之间的矩形都高于第i个矩形,那么边界内最大面积必为height原创 2015-04-17 19:48:34 · 597 阅读 · 0 评论 -
Codeforces Round #326 (Div. 2)
这场时间太晚偷懒没做。。昨天补了一下发现痛失涨分机会,权当为区域赛攒人品了囧。。A - Duff and Meat维护当前最低价,每天都以最低价购买所需食物。B - Duff in Love输出n的素因数之积即可。C - Duff and Weight Lifting统计每一等级重量的数目,然后转换成二进制,再统计二进制数有多少个1.D - Duff in Beach题意: 有数组 a[0…n−原创 2015-10-21 23:08:27 · 362 阅读 · 0 评论 -
HDU 4372 Count the Buildings(组合数学,第一类Stirling数)
HDU 4372题意:有n个建筑高度为1~n,从前看能看到f个,从后看能看到b个,求可能有多少种排序情况。思路:五个小时花了3.5小时在上面,结果靠强行yy出了递推式(事后发现。。yy对了95%,跪在各种细节上,比赛结束也没A掉。。只能说大力出奇迹!但这种奇迹往往会毁在不经意的细节上orz分析几组数据我们可以发现,最高的n号楼一定是可以看到的,无论是从左还是右。原创 2015-08-05 23:09:43 · 1196 阅读 · 1 评论 -
2013 Aizu Regional Contest(UValive 6661,6662,6663,6664,6665,6669)
A - Equal Sum Sets题意: 输入三个数 n, k, s . 求有多少种集合元素个数为k,元素最大值为n,元素之和为s,集合中元素均不相同.思路:暴力 由于 n≤20n \leq 20 ,那么只有 220=1062^{20} = 10^6 种集合,那么枚举集合判断是否符合条件即可,复杂度为 O(2n∗k)O(2^n*k),但由于有100组样例。。所以只能很勉强地过,n原创 2015-11-04 00:13:57 · 781 阅读 · 0 评论 -
Codeforces Round #319 (Div. 2)(A,B,C,E)
Codeforces Round #319 (Div. 2)A.Multiplication Table题意: 求m在n*n的加法表中出现了几次思路:枚举1到n,累计能整除m的情况。代码:/** @author FreeWifi_novicer* language : C++/C*/#include<cstdio>#include<iostream>#include<cstring原创 2015-09-12 02:12:43 · 928 阅读 · 0 评论 -
HDU 4359 Easy Tree DP?(是dp但并不是tree dp + 组合计数)
HDU 4359题意:定义Bear Tree为一颗二叉树,这种二叉树每个结点有一个权值,范围在2^0~2^n-1,并且每个值只用一次,对于每个结点,如果同时存在左右子树,那么左子树的权值和要小于右子树的权值和。求点数为N,层次为D的Bear Tree的数量。思路:2^0 + 2^1 + ... + 2^n 根据这个性质,我们可以得出权值最大节点必须在右子树上,并且只要同时存在左右子原创 2015-08-03 15:53:12 · 871 阅读 · 1 评论 -
POJ 1050 To the Max(DP,最大子矩阵和)
POJ 1050题意:给一个矩阵,求出元素和最大的子矩阵。思路:之前曾写过最大子串和的一篇文章,这次由一维上升到了二维。我们可以通过累加每行相同列或每列相同行的值,将其储存在一个数组中,便可以将二维降至一维。时间复杂度为O(n^3)。参考:累加每一行相同列的做法(java实现)累加每一列相同行的做法(C++实现)code:/**Author : F原创 2015-07-23 16:23:31 · 853 阅读 · 0 评论 -
POJ 2479 Maximum sum & POJ 2573 Max Sequence (DP,最大连续子串和)
POJ 2479题意:给一个数列,求任意两个子序列的包含元素的和的最大值,两个子序列无公共部分。思路:dp1[i]表示第一个元素a[1]到a[i]的最大子段和,状态转移方程是dp1[i] = max(dp1[i-1]+a[i],a[i]);//不理解最大子段和方程的可以参考最大子段和问题dp2[i]表示末一个元素a[n]到a[i]的最大子段和,状态转移方程是dp2[i] = max原创 2015-07-21 23:33:28 · 973 阅读 · 0 评论 -
HDU 4175 Class Schedule (暴力+一点dp)
HDU 4175题意:有C座楼,每座楼有T个教室,一个人需要访问C个教室,每座楼只能访问一个教室。访问教室需要消耗能量,从x点走到y点需要消耗abs(x-y)的能量,最后要走到目的点L,问最后走到目的点L需要消耗的最少能量。思路:读清题意,用getchar()的方式去读。。此外英文阅读水平比较拙计,亟待提升,以后不能再直接用有道翻译来做题了!直接暴力枚举。用dp[i][j]表示clas原创 2015-07-26 23:32:02 · 774 阅读 · 0 评论 -
HDU 4293 Groups(区间dp)
HDU 4293题意:有 n 个人,可任意分成若干组,然后每个人各提供一个信息,表示他们组前面有多少个人,后面有多少个人。问最多有多少个信息是真实的的。思路:这道题一开始给我的印象是什么乱七八糟的东西,后来也没想通到底该怎么做,好在赛后百度在手天下我有:)我们可以把 这n个人看成一段区间 [1,n]。设每个人的信息是a、b,则这个信息代表了他们组所在的区间 [a+1,n-b]。原创 2015-07-27 22:05:36 · 754 阅读 · 0 评论 -
HDU 4283 You Are the One (区间dp)
HDU 4283题意:有n个男屌丝依次排队要登台,如果某个男屌丝前面排有k个人,则该屌丝很生气,生气程度 = (k-1)*D(D代表屌丝程度)。现在有一个小黑屋,小黑屋先进后出,如果把某屌丝放进去,那么他后面的人就能先登台。给出每个人的屌丝程度与原定上台顺序,求怎样利用小黑屋,能够使众屌丝生气程度之和最小,求出最小值。思路:#define 愤怒值 生气程度 dp[i][j]表示原创 2015-07-27 21:35:57 · 554 阅读 · 0 评论 -
回文字符串小结(回文串判定+最长回文子序列)
定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文串判定例1:hdu2029题意:请写一个程序判断读入的字符串是否是“回文”。思路:回文串最基本的判定法是将一个字符串扫一遍,判断第i个字符和倒数第i个字符是否相同,不相同则返回false。也可以用栈来实现,复杂度均为O(n)。code:/原创 2015-05-29 14:15:41 · 2668 阅读 · 0 评论 -
POJ 1014 Dividing(简单dp)
Description Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles ha原创 2015-03-25 23:53:29 · 400 阅读 · 0 评论 -
CodeForces 71C Round Table Knights(数学+枚举)
题目戳这里题意:圆上有n个点均匀分布,其中点的状态有0或1两种情况,现在告诉你所有点的状态,问:能否由状态为1的点组成正多边形。思路:公式推理+枚举。当n=3时,我们需要验证是否有正三边形(三角形);当n=6时,我们需要验证是否有正六边形与正三角形;当n=9时,我们需要验证是否有正九边形与正三角形;……可以发现只要检测n的大于3的因数作为边数原创 2015-05-17 22:07:25 · 890 阅读 · 0 评论 -
UVALive 5760 Alice and Bob(博弈+记忆化dp or 找规律)
题意:黑板上写了n(n<=50)个不超过1000的数, 双方轮流进行以下操作中的一种:将一个数减1,当某个数为0时将其擦去;将两个数擦去,并将两个数之和写上黑板;擦去最后一个数为胜者,Alice先手,求最后胜者。思路:如果所有数都是大于1的数,共可执行 cnt 次操作,其中: cnt=sum(a[i])+n−1cnt = sum(a[i])+n-1 当 cnt 为奇数时先手胜利,偶数时后原创 2015-11-10 17:11:59 · 895 阅读 · 0 评论