题目链接:http://poj.org/problem?id=2593

思路分析:该问题为求给定由N个整数组成的序列,要求确定序列A的2个不相交子段,使这m个子段的最大连续子段和的和最大。

该问题与poj 2479相同,解法也一样;

代码如下:

#include <cstdio>
#include <iostream>
using namespace std; const int MAX_N = + ;
int arr[MAX_N], dp_s[MAX_N], dp_r[MAX_N];
int arr_num; int main(int argc, char *argv[])
{
int temp_ans, sum, ans; while (scanf("%d", &arr_num) != EOF && arr_num != )
{
for (int i = ; i < arr_num; ++i)
scanf("%d", &arr[i]); temp_ans = INT_MIN, sum = ;
for (int i = ; i < arr_num; ++i)
{
if (sum >= )
sum += arr[i];
else
sum = arr[i];
if (sum > temp_ans)
temp_ans = sum;
dp_s[i] = temp_ans;
} temp_ans = INT_MIN, sum = ;
for (int i = arr_num - ; i >= ; --i)
{
if (sum >= )
sum += arr[i];
else
sum = arr[i];
if (sum > temp_ans)
temp_ans = sum;
dp_r[i] = temp_ans;
} ans = dp_s[] + dp_r[];
for (int i = ; i < arr_num - ; ++i)
{
int sum = dp_s[i] + dp_r[i + ];
if (sum > ans)
ans = sum;
}
printf("%d\n", ans);
} return ;
}

poj 2593 Max Sequence(线性dp)的更多相关文章

  1. POJ 2479 Maximum sum POJ 2593 Max Sequence

    d(A) = max{sum(a[s1]..a[t1]) + sum(a[s2]..a[t2]) | 1<=s1<=t1<s2<=t2<=n} 即求两个子序列和的和的最大 ...

  2. POJ 2593 Max Sequence

    Max Sequence Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17678   Accepted: 7401 Des ...

  3. POJ 1458-Common Subsequence(线性dp/LCS)

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39009   Accepted: 15 ...

  4. poj 1141 Brackets Sequence (区间dp)

    题目链接:http://poj.org/problem?id=1141 题解:求已知子串最短的括号完备的全序列 代码: #include<iostream> #include<cst ...

  5. poj 1836 Alignment(线性dp)

    题目链接:http://poj.org/problem?id=1836 思路分析:假设数组为A[0, 1, …, n],求在数组中最少去掉几个数字,构成的新数组B[0, 1, …, m]满足条件B[0 ...

  6. poj 1141 Brackets Sequence 区间dp,分块记录

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35049   Accepted: 101 ...

  7. POJ 1141 Brackets Sequence(区间DP, DP打印路径)

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

  8. poj 1141 Brackets Sequence ( 区间dp+输出方案 )

    http://blog.csdn.net/cc_again/article/details/10169643 http://blog.csdn.net/lijiecsu/article/details ...

  9. HDOJ 1003 Max Sum(线性dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 思路分析:该问题为最大连续子段和问题,使用动态规划求解: 1)最优子结构:假设数组为A[0, 1 ...

随机推荐

  1. js判断年龄是否在0-100之间

    //判断年龄 $('#info_age').change(function(){ var _val = $(this).val(); -]+$/.test( _val ))||_val< || ...

  2. CreateEvent,OpenEvent成功后 是否需要::CloseHandle(xxx); 避免句柄泄漏

    bool bExist = false; HANDLE hHandle = ::CreateEvent(NULL,  FALSE,  FALSE,  L"Global\\xxxxx_name ...

  3. Do not go gentle into that good night

    Do not go gentle into that good night By:Dylan Thomas   Do not go gentle into that good night,Old ag ...

  4. 非原生APP开发中可以用到的JQ插件

    fancybox 弹出层 图片什么的都可以 效果还不错..

  5. MySQL 表分区A

    在MySQL中表的分区类型总的来说有四种: 第一种:range分区.基于一个给定的区间范围,把数据分配到不同的分区. 第二种:list   分区.基本枚举的值列表进行分区. 第三种:hast 分区.基 ...

  6. 完美解决CTRL+空格不能切换中/英文输入法的问题

    首先任务栏上的输入法图标上点右键选择设置. 然后选择键设置,双击第一个“在不同的输入语言之间切换”先勾选“切换输入语言”下面选择左手ALT.取消右边“切换键盘布局”前的勾. 然后进入“中文(简体)输入 ...

  7. VC中使用GetModuleFileName获取应用程序路径

      .\\与API函数GetModuleFileName获取应用程序目录有何不一样? 采用.\\也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同? 一样!一个是相对路 ...

  8. 封装的localstorge的插件,store.js

    封装的localstorge的插件,store.js https://github.com/marcuswestin/store.js/

  9. Java经典问题算法大全

    /*[程序1] 题目:古典问题:有一对兔子.从出生后第3个月起每一个月都生一对兔子.小兔子长到第三个月后每一个月又生一对兔子,假如兔子都不死.问每一个月的兔子总数为多少?  1.程序分析: 兔子的规律 ...

  10. paip. everything exe 文件不能启动的解决

    paip.   everything  exe  文件不能启动的解决 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blo ...