题意: 有一些牛,每头牛有一个Si值,一个Fi值,选出一些牛,使得max( sum(Si+Fi) ) 并且 sum(Si)>=0, sum(Fi)>=0思路: 随便选一维做容量(比如Fi),另一维做价值,然后直接做01背包。 做的时候注意一下方向。 最后,在合法解里面找一下最优解就好了。代码...
分类:
其他好文 时间:
2014-11-25 01:41:50
阅读次数:
256
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003简单dp,状态转移方程:sum[i] = max{sum[i-1]+a[i],a[i]}. (sum[i]记录以a[i]为子序列末端的最大连续和.)对于a[i]这个数字,我们考虑是否将它选入之前连续的序...
分类:
其他好文 时间:
2014-11-24 20:41:32
阅读次数:
216
题目大意:给你两个数M和N,之后是N个数,从这N个数找到M个子段,
求M个子段的最大和
思路:一开始不懂怎么找状态转移方程。参考别人博客才明白。
.设dp[i][j] 为将前 j 个数字分成 i 段的最大和。num[j]为当前数字
那么转移方程为 dp[i][j] = max(dp[i][j-1]+num[j],dp[i-1][k]+num[j]) (i-1<=k<=j-1)
也可以视为 dp[i][j] = max(dp[i][j-1]+num[j],max(dp[i-1][i-1],dp[i-1][i]...
分类:
编程语言 时间:
2014-11-18 13:29:44
阅读次数:
228
状态:d(i,j)表示前j个数分为i段且包含第j个数时的最优结果,g(i,j)表示前j个数分为i段时的最优结果,g(m,n)即为所求结果。
本题数据较大,需采用滚动数组,注意:这题int类型就够用了,开long long可能会TLE。
用滚动数组后,g[j]表示分成i段时最优结果,最后求出的g[n]即为结果
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-11-10 21:54:34
阅读次数:
200
这题目一直wa,原来是因为我把JUDGE写错了,对拍了一下午都没检查出来。水DP啊。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define MAXN 1020 9...
分类:
其他好文 时间:
2014-11-10 17:23:36
阅读次数:
177
Max Sum Plus Plus
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17336 Accepted Submission(s): 5701
Problem Description
Now I t...
分类:
其他好文 时间:
2014-11-08 18:17:57
阅读次数:
262
题目来源:补提交卡解题思路:假设未提交程序的天数为:a1,a2,....,an,补交的张数为M。依次从a1,a2,....,an中去掉连续的 K 天(0 sum ? max : sum;17 }18 return max;19 }20 21 //从下标...
分类:
其他好文 时间:
2014-11-08 00:42:33
阅读次数:
310
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003题目意思:即给出一串数据,求连续的子序列的最大和解题思路:因为我们很容易想到用一个max来存放找到的子序列的和中的最大值,通过不断比较,对max的值进行更新,最后我们就能够得到最大子序列的和,于是很...
分类:
其他好文 时间:
2014-11-03 22:25:03
阅读次数:
267
这一题目是要求连续子序列的最大和,所以在看到题目的一瞬间就想到的是把所有情况列举出来,再两个两个的比较,取最大的(即为更新最大值的意思),这样的思路很简单,但是会超时,时间复杂度为O(n^3),因为有三重for语句#include#define maxn 101000int main(){ int ...
分类:
其他好文 时间:
2014-11-03 01:20:40
阅读次数:
167