题意:n个数,分成m段,求这m段的最大和,段之间不能交叉。
分析:
这题跟最大子序列和的区别在于要求分成m段,所以做法就千差万别了。实际的做法倒有点像分组dp(将n个数分成m组),但是本题与上次写的两道分组dp(搬寝室和特殊的筷子)的不同是:上两题每组选两or三个元素,本题不确定每一段要选多少个元素;上两题先排序再做,这题只能根据序列原定顺序走。
本题难点:
1.状态:dp[i][j]在确...
分类:
其他好文 时间:
2015-07-18 14:13:24
阅读次数:
219
Problem DescriptionThe description of this problem is very short. Now give you a string(length N), and ask you the max sum of the substring which the ...
分类:
其他好文 时间:
2015-07-15 22:28:01
阅读次数:
109
状态:d(i,j)它代表前j划分数i部并且包括第一j最佳结果时的数。g(i,j)表示前j划分数i最好的结果时,段,g(m,n)结果,需要。本题数据较大。需採用滚动数组。注意:这题int类型就够用了,开long long可能会TLE。用滚动数组后,g[j]表示分成i段时最优结果,最后求出的g[n]即为...
分类:
其他好文 时间:
2015-07-08 20:49:37
阅读次数:
109
输入一组整数,求出最大子序列的和.
例如:序列: - 2 11 - 4 13 - 5 - 2,则最大子序列和为20。
序列: - 6 2 4 - 7 5 3 2 - 1 6 - 9 10 - 2,则最大子序列和为16
遍历是一种方法:
#include
int Max_Son(int *p, int len)
{
int Max_Sum = 0;
i...
分类:
编程语言 时间:
2015-07-08 19:07:24
阅读次数:
102
除了Pivot和Unpivot这两个函数,还有像CASE WHEN + 聚合函数像MAX,SUM这类的来完成。今天发现Oracle下居然有这样一个和SQL SERVER 2012以后新增的新函数叫IIF相似功能的函数叫decodeSELECT * FROM (SELECT job, ...
分类:
数据库 时间:
2015-07-08 00:31:18
阅读次数:
234
做完此题之后 自己应该算是真正理解了斜率优化DP根据状态转移方程f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]可以变形为 f[i]=max((a*sum[j]^2-b*sum[j])-(2a*sum[j]*sum[i]))+(a*sum[i]^2+b*sum[i]+...
// 输入一组整数,求出最大子序列的和.
// 例如:序列: - 2 11 - 4 13 - 5 - 2,则最大子序列和为20。
// 序列: - 6 2 4 - 7 5 3 2 - 1 6 - 9 10 - 2,则最大子序列和为16
#include
int Max_Son(int *p, int len)
{
int Max_Sum = 0;
int i, j;...
分类:
编程语言 时间:
2015-07-06 23:33:37
阅读次数:
360
//hdu1754#include#define lson l,m,rty?x:y;}void PushUP(int rt){ sum[rt] = max(sum[rt>1; build(lson); build(rson); PushUP(rt);}void Updata(int i,int B,...
分类:
其他好文 时间:
2015-07-06 15:29:25
阅读次数:
124
fl[i]表示[1,i]操作一次,且在[j+1,i]处操作的最大值1:把[j+1,i]改为b[i]: max(sum[j]+b[i]*(i-j))=b[i]*i+max(-j*b[i]+sum[j])(0#include#define N 500010typedef long long ll;int...
分类:
其他好文 时间:
2015-07-04 15:28:24
阅读次数:
237
问题1:ans=max(sum[n]-(sum[i]-sum[j-1])+a[i]*(i-j+1))=max(sum[n]-sum[i]+sum[j-1]+a[i]*(i+1)-a[i]*j)=sum[n]-sum[i]+a[i]*(i+1)+f[i]f[i]=max(-j*a[i]+sum[j-1...
分类:
其他好文 时间:
2015-07-03 23:16:19
阅读次数:
230