
DP
文章平均质量分 79
Martin20150405
博客搬家啦,http://martin20150405.github.io
(邮箱Martin20150405@163.com)
展开
-
[树状数组+上升子序列] HDU 3030 Increasing Speed Limits
题意:求一组数有多少严格上升子序列。以1 2 1 2 3为例,他的严格上升子序列有1 2 1 2 3 12 12 13 123 123 23 12 13 123 23话说这个输入真的好坑,看了半天才看懂,算出来的数还会爆int ...- -|||思路:因为要求严格上升,所以同样大小的数只能出现一次。因此可以先对数组进行排序、去重操作。得到的新数组即为离散化的数组,每个数对应的下标即大小原创 2016-02-02 14:23:52 · 1363 阅读 · 0 评论 -
ZOJ 3949 Edge to the Root(树形DP)
题意给定一棵树,选一个节点和根相连,使得最后所有点到根的距离和最小,求最小距离和思路首先一个点和根连起来以后,影响的只有根到这个点这条路径上的点,以及他们的子树,并且对于每个点影响的权值都是能够确定的。 一个点减少多少距离,那么子树中的点也会减少多少距离。从路径的中点以下,因为连了根减少的权值为2-4-6…以此类推虽然树形DP怎么打都行,但是不知道为什么网上找到的代码都特别复杂,看了半天才看懂。然原创 2017-04-18 10:36:23 · 867 阅读 · 0 评论 -
ZOJ 3956 Course Selection System (dp 01背包)
思路题目要求H2−H∗C−C2H^2-H*C-C^2最大,那么就可以认为C尽量小,H尽量大,转换成对于每一个C,求最大的H,因为C的范围只有50000,所以可以直接0-1背包求解代码#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a))#define rep(i,a,b) for(int i=a;i<b;i++)const i原创 2017-04-13 20:20:39 · 618 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2) C. Vladik and chat (DP/记忆化搜索)
题意有n个人和m句话,有些话的说话人不明,要求是每个人不能连着说两句话,每句话不能提到自己,看看能不能将这些话的说话人都找出来,答案可能不固定。思路题目的限制只有两个,因此对于每一句说话人不明的话,可以直接枚举可能的说话人,但是暴力搜索复杂度太高,因此可以使用动态规划或者记忆化搜索来求解。因为一个人不能连着说两句话,所以当前枚举的说话人会影响到后面的结果,由于题目只要求任意可行解,我们要做的就是找出原创 2017-01-25 15:13:45 · 732 阅读 · 0 评论 -
【模版】二分查找、最长上升子序列(LIS)、最长下降子序列模版
二分:lower_bound()在first和last二分查找(前闭后开),返回第一个大于等于x的位置upper_bound()返回第一个大于x的位置区别:>=和>,即保持非降序的第一个可安插位置和最后一个可安插位置int lowerBound(int x){ int l=1,r=n; while(l<=r){ int mid=(l+r)>>原创 2016-07-17 10:30:44 · 1252 阅读 · 0 评论 -
(HDU 5823)2016 Multi-University Training Contest 8 color II (m染色问题、最大独立集、DP)
思路独立集:点集中的所有点两两无边。 一个结论:一个无向图的最大独立集(点数最多)等于其补图的最大团(两两有边) 暴力枚举所有的子集,并对子集进行染色 预处理时去掉存在非独立集的子集,然后dp枚举子集,染色即对独立集染色(这样能保证两点相连时颜色不同),最后取一个状态对应的独立集个数的最小值 复杂度O(N3)O(N^3),可能讲的不太清楚,还是看代码吧。。原来这样可以求i的所有子集呀,一直没原创 2016-08-12 22:09:38 · 740 阅读 · 0 评论 -
(POJ 2559)Largest Rectangle in a Histogram (POJ 2796) Feel Good(DP、单调栈)
思路两题题目类似,都要求出最大矩形,可以用单调栈来处理,小于栈顶元素就不断出栈,保证栈是递增的。 定义左界和右界表示已当前元素为最高高度的连续矩形区域 在出栈时,会更新被出栈元素的右界,同时一个元素的左界在入栈前就已经确定。POJ 2559#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#原创 2016-08-10 20:44:34 · 487 阅读 · 0 评论 -
(POJ 3494)Largest Submatrix of All 1’s (DP、单调栈)
思路求最大子矩阵问题相当于对每一行求最大矩形问题问题,可以用单调栈处理。 因为子矩阵必有开始行和结束行,相当于枚举开始行,然后通过histogram的最大矩形问题保证到结束行为止都是1且最宽代码用自带的栈会超时(因为我用了结构体和scanf的关系)#include <iostream>#include <cstdio>#include <algorithm>#include <cstring原创 2016-08-10 20:35:09 · 959 阅读 · 0 评论 -
(HDU 5816)2016 Multi-University Training Contest 7 Hearthstone (状压DP、搜索)
思路能够赢的状态有: 1. 抽一张B就赢 2. 抽一定数量的A、配合BTip: 1. 如果造成的伤害已经≥p\geq p,那么就直接乘上剩下的全排列即可 2. 从已经抽了的牌数可以推出能够再抽的牌数: leftCard=usedA−usedB+1leftCard=usedA-usedB+1 从小到大枚举状态S,判断S是否合法,即S的方案数不为0且还能摸牌,然后通过S去更新S+i(i∉S原创 2016-08-10 09:53:31 · 477 阅读 · 0 评论 -
CodeForces 216B Forming Teams
B. Forming Teamstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOne day n students come to the stadium. Th原创 2016-07-12 20:35:43 · 846 阅读 · 0 评论 -
Codeforces Round #274 Riding in a Lift (DP)
C. Riding in a Lifttime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputImagine that you are in a building that原创 2016-07-12 20:12:41 · 611 阅读 · 0 评论 -
ZOJ 3962 Seven Segment Display (数位DP)
题意数字时钟每秒钟会消耗显示的数字所需的能量,给定时间长度m和起点st,求m秒内会消耗的能量思路没有什么比看错题目却一直没发现更悲催的了。。。 队友和我说了题意,然后我想都没想就开始写了,一直以为前导零是不需要计算代价的,虽然样例就是有前导零的。。 就这样带着错误的思路打了三个小时。。 好吧,不怪队友,谁让自己连样例都不看呢。。这题的打法很多,延续昨天想到的思路,用数位dp来做 我们用dp[原创 2017-04-23 15:50:31 · 819 阅读 · 0 评论