The naive solution is brute-force, which is O((mn)^2). In order to be more efficient, I tried something similar to Kadane's algorithm. The only differ ...
分类:
其他好文 时间:
2016-11-26 09:35:39
阅读次数:
435
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:给定一个数组,求其分成m个不相交子段和的最大值。 这题有点问题其实m挺小的但题目并没有给出。 dp[i][j]表示取第i 位的数共取了j段然后转移方程显然为 dp[i][j]=max(dp[ ...
分类:
其他好文 时间:
2016-11-25 23:10:01
阅读次数:
232
#include <stdio.h>#include <math.h>#include <time.h>#define max 1000int sum=0;bool place (int k,int x[]){ for (int j=1;j<k;j++)if ((abs(k-j)==abs(x[j] ...
分类:
其他好文 时间:
2016-10-16 07:43:32
阅读次数:
157
http://acm.split.hdu.edu.cn/showproblem.php?pid=1087 状态方程:sum[j]=max{sum[i]}+a[j]; 其中,0<=i<=j,a[i]<a[j] 把当前最大和更新到数组中,注意顺序。 Input Input contains multip ...
分类:
其他好文 时间:
2016-09-28 22:38:30
阅读次数:
156
#include <stdio.h>#include <math.h>#include <time.h>#define max 1000int sum=0;bool place (int k,int x[]){ for (int j=1;j<k;j++)if ((abs(k-j)==abs(x[j] ...
分类:
其他好文 时间:
2016-09-23 23:32:29
阅读次数:
300
#include <stdio.h>#include <math.h>#include <time.h>#define max 1000int sum=0;bool place (int k,int x[]){ for (int j=1;j<k;j++)if ((abs(k-j)==abs(x[j] ...
分类:
其他好文 时间:
2016-09-23 23:25:13
阅读次数:
216
Max Sum Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status Description Given a sequence a[1],a[2],a[3]......a[n], y ...
分类:
其他好文 时间:
2016-09-17 00:18:15
阅读次数:
186
bzoj2442[Usaco2011 Open]修剪草坪 题意: 从一个序列中选n个数,要求这些数中不能有超过k个数在原序列中位置是连续的。求最大的取数之和。n≤100000。 题解: f[i]表示不选i,1到i-1可以得到的最大取数之和。则f[i]=max(f[j]+sum[i-1]-sum[j] ...
分类:
其他好文 时间:
2016-09-16 16:48:04
阅读次数:
135
子串和 时间限制:5000 ms | 内存限制:65535 KB 难度:3 子串和 时间限制:5000 ms | 内存限制:65535 KB 难度:3 实例分析:a[0]~a[10] ={ 0, -2, -3, 1, 2, 3, -2, 4}; 第一次判断a[1] < 0; max_sum = -1 ...
分类:
其他好文 时间:
2016-09-10 17:39:36
阅读次数:
107
斜率优化 //f[i]=max(f[j-1]+a(sum[i]-sum[j-1])^2+b(sum[i]-sum[j-1])+c) (1<=j<=i) //g[j]>g[k]=>f[j-1]+a(sum[i]-sum[j-1])^2-bsum[j-1])<f[k-1]+a(sum[i]-sum[k- ...