动态规划 P1121 环状最大两段子段和
来源:互联网 发布:mac其他怎么清理 编辑:程序博客网 时间:2024/06/07 00:50
P1121 环状最大两段子段和
题目描述
给出一段环状序列,即认为A[1]和A[N]是相邻的,选出其中连续不重叠且非空的两段使得这两段和最大。
输入输出格式
输入格式:
输入文件maxsum2.in的第一行是一个正整数N,表示了序列的长度。
第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列,第一个数和第N个数是相邻的。
输出格式:
输入文件maxsum2.out仅包括1个整数,为最大的两段子段和是多少。
输入输出样例
输入样例#1:
72 -4 3 -1 2 -4 3
输出样例#1:
9
说明
【样例说明】
一段为3
前缀和、后缀和的应用
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 using namespace std; 7 struct data{ 8 int w,h; 9 }book[120];10 bool cmp(const data&a,const data&b){11 return a.h<b.h;12 }13 int f[120][120];14 int n,k,ans;15 int main(){16 scanf("%d%d",&n,&k);17 for(int i=1;i<=n;i++) scanf("%d%d",&book[i].h,&book[i].w);18 k=n-k;19 sort(book+1,book+n+1,cmp);20 for(int i=1;i<=n;i++)21 for(int j=2;j<=min(i,k);j++){22 f[i][j]=0x3f3f3f3f;23 for(int p=j-1;p<i;p++) f[i][j]=min(f[i][j],f[p][j-1]+abs(book[i].w-book[p].w));24 }25 ans=0x3f3f3f3f;26 for(int i=k;i<=n;i++) ans=min(ans,f[i][k]);27 printf("%d",ans);28 return 0;29 }
阅读全文
0 0
- 动态规划 P1121 环状最大两段子段和
- P1121 环状最大两段子段和(DP)
- 洛谷 P1121 环状最大两段子段和
- 洛谷 P1121 环状最大两段子段和
- 【u124】环状最大两段子段和
- 洛谷1121环状最大两段子段和
- 动态规划入门 TYVJ 1305 最大子段和(环状)
- HDU 1024 Max Sum Plus Plus((最大m段子段和))(动态规划经典)
- [ACM] POJ 2479 Maximum sum (动态规划求不相交的两段子段和的最大值)
- [ACM] POJ 2479 Maximum sum (动态规划求不相交的两段子段和的最大值)
- (5)最大m段子序列和问题____动态规划
- 动态规划----最大子段和
- 最大子段和(动态规划)
- 最大子段和动态规划实现
- 最大子段和(动态规划)
- 【动态规划】最大m子段和
- 动态规划 - 最大子段和
- 最大子段和-分治&&动态规划
- 区间DP NOIP2006 能量项链
- 动态规划入门 UVA12563 Jin Ge Jin Qu hao
- 区间DP UVA1052 A Spy in the Metro
- Manacher HDU3068 最长回文
- AC自动机 HDU2222 Keywords Search
- 动态规划 P1121 环状最大两段子段和
- P1993 小 K 的农场
- 动态规划入门 洛谷P1004 方格取数
- 动态规划入门 NOIP2008 传纸条
- P1282 多米诺骨牌
- 搜索 洛谷 P1434滑雪
- P1416 攻击火星
- 倍增LCA BZOJ1776 cowpol奶牛政坛
- 基于Solr的空间搜索