动态规划
SeeYouAlways
practice make perfect
展开
-
POJ 1050 To the Max(最长子串DP)
刚看到这题目确实蒙了!之前没学过动态规划,于是在网上搜了搜,理解了一点,一下是解题思路:题目大意是:读入一个nj阶数组,数组元素有正有负。比如:0 -2 -7 0 9 2 -6 2原创 2013-01-23 13:08:42 · 345 阅读 · 0 评论 -
POJ 1125(多源最短路径问题)
题意:在证券交易所,有n(编号为1—n)个股票交易人,他们之间有的是互相认识的,现在有一个消息,消息只能在认识的人之间相互传递,现在告诉了他们之间互相认识的人的编号以及他们之间传递消息的时间,现在要求以哪个编号的交易人散布消息,当传到最后一个人时所需要的时间最短,也就是每个人都必须被通知,否则输出“disjoint”解题思路:因为是每个人都可能为起点,而去求他到其他人的最短距离,所以要用到Fl原创 2013-01-23 17:51:59 · 536 阅读 · 0 评论 -
区间DP
区间动态规划问题一般都是考虑,对于每段区间,他们的最优值都是由几段更小区间的最优值得到,是分治思想的一种应用,将一个区间问题不断划分为更小的区间直至一个元素组成的区间,枚举他们的组合 ,求合并后的最优值。设F[i,j](1最小区间F[i,i]=0(一个数字无法合并,∴代价为0)每次用变量k(iFor p:=1 to n do // p是区间长度,作为阶段。 for i:=1转载 2013-08-02 16:23:47 · 584 阅读 · 0 评论 -
Poj 3061 Subsequence 队列区间求和
题意:按照顺序给定一组数,求出这组数中和大于等于m的最短子序列。思路:1.strar=0开始求和sum知道sum>=m,更新最短序列的长度 2.把sum从开始start位置开始一直减知道sum代码:#include #include #include #include #include #include #include #include #de原创 2013-09-05 21:27:06 · 980 阅读 · 0 评论 -
POj 2823 Sliding Window 单调队列
题意:给出n和k ,求在n个数里每隔k个数求出其中的最小值和最大值并分别输出思路:采用单调队列单调队列的性质:在动态规划的过程中,单调队列中每个元素一般存储的是两个值:1、在原数列中的位置(下标)2、在动态规划中的状态值用一个数组模拟队列,记录下标坑爹,我几乎调了两个小时,一直TLE,找位置改用二分法还是T了,最后想放弃了,然后用c++交A了!可怜我花了那么长时间代原创 2013-09-05 19:40:01 · 601 阅读 · 0 评论 -
Hdu 3530 Subsequence 单调队列
题意:求出一个序列里最大元素与最小元素之差s满足条件:m思路:还是利用单调队列,设两个队列q1和q2,分别存上升序列和下降序列,上升序列的最左端最小,下降序列的最左端最大,若两者之和>k,那么调整开始序列的位置代码:#include #include #include #include #include #include #include #include #defin原创 2013-09-05 20:48:38 · 637 阅读 · 0 评论 -
Poj 3254 Corn Fields 状态压缩
题意:在一些有草的地方放牛,并且相邻的不能放牛,问放牛的方案数思路:定义以一个dp[i][j],代表第i行第j种状态下所获得的方案数 ,注意位运算代码:#include #include #include #include #include #define mod 100000000using namespace std;int dp[15][1<<13];int原创 2013-10-04 17:32:25 · 521 阅读 · 0 评论