5227: 最大子列和问题

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte
总提交:
76
          
测试通过:46

描述

给定KK个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。

本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:

数据1:与样例等价,测试基本正确性;

数据2:102个随机整数;

数据3:103个随机整数;

数据4:104个随机整数;

数据5:105个随机整数;

输入

输入第1行给出正整数K (K≤100000);第2行给出K个整数,其间以空格分隔。

输出

在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

样例输入

6
-2 11 -4 13 -5 -2

样例输出

20

分而治之

 #include <bits/stdc++.h>
using namespace std;
const int N=1e5+;
int arr[N];
int judge(int first,int ending){ //分成子问题来做
if(first==ending){ //最终都会变成长度为1的子序列
return arr[first];
}
int mid=(first+ending)/;
int sum1=judge(first,mid); //mid左边的最大值
int sum2=judge(mid+,ending); //mid右边的最大值
int lmax=arr[mid],rmax=arr[mid+],sum=;
for(int i=mid;i>=first;i--){
sum+=arr[i];
lmax=max(lmax,sum);
}
sum=;
for(int i=mid+;i<=ending;i++){
sum+=arr[i];
rmax=max(rmax,sum);
}
int ans=lmax+rmax;
if(ans<sum1) ans=sum1;
if(ans<sum2) ans=sum2;
return ans;
}
int main()
{
int n,num=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&arr[i]);
if(arr[i]<) num++;
}
if(num==n) {printf("0\n");return ;}
int zhi=judge(,n);
printf("%d\n",zhi);
return ;
}

dp

 #include <bits/stdc++.h>
using namespace std;
const int N=1e5+;
int main()
{
int n,dp[N],num=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&dp[i]);
if(dp[i]<) num++;
}
if(num==n) {printf("0\n");return ;}
int ans=dp[];dp[]=;
for(int i=;i<=n;i++){
if(dp[i-]>) dp[i]+=dp[i-];//dp[i]==max(dp[i],dp[i-1]+num[i])
else dp[i]+=;
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
return ;
} #include <bits/stdc++.h>
using namespace std;
const int N=1e5+; //求最长子序列 并且输出第一个元素和最后一个元素
int main()
{
int n,dp[N],num=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&dp[i]);
if(dp[i]<) num++;
}
if(num==n) {printf("0\n");return ;}
int flag,u,v,sum=,maxx=dp[];
for(int i=;i<=n;i++){
if(sum<){ //小于要舍弃
sum=dp[i];
u=i;
}
else sum+=dp[i];
if(sum>maxx){
maxx=sum;
flag=u;
v=i;
} }
printf("bian1:%d bian2:%d maxx=%d\n",u,v,maxx);
return ;
}

最长连续子序列(dp,分而治之递归)的更多相关文章

  1. TOJ 5065: 最长连续子序列

    5065: 最长连续子序列   Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 140   ...

  2. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. 【BZOJ2423】[HAOI2010]最长公共子序列 DP

    [BZOJ2423][HAOI2010]最长公共子序列 Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  4. HDU 1003 Max Sum && HDU 1231 最大连续子序列 (DP)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  5. POJ-2533最长上升子序列(DP+二分)(优化版)

    Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41944   Acc ...

  6. ACM_HDU 1231 最大连续子序列 (dp)_代码分析

    Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...

  7. LCS最长公共子序列~dp学习~4

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 Palindrome Time Limit: 4000/2000 MS (Java/Others ...

  8. Longest Ordered Subsequence POJ - 2533 最长上升子序列dp

    题意:最长上升子序列nlogn写法 #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  9. POJ 1458 最长公共子序列(dp)

    POJ 1458 最长公共子序列 题目大意:给出两个字符串,求出这样的一 个最长的公共子序列的长度:子序列 中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的 先后顺序一致. Sam ...

  10. hdu 1159 Common Subsequence(最长公共子序列 DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

随机推荐

  1. Python 爬虫 JD商品-scrapy+requests

    目标站点需求分析 JD商品信息抓取 需求信息字段 涉及的库 scrapy, requests,re lxml 获取单页源码 解析单页源码 获取总页数 获取商品url 解析商品信息 保存本地文件 保存m ...

  2. UI设计师给的px尺寸单位,安卓如何换算成dp?

    很多UI工程师为了适配IOS,常常拿IOS手机作用参考模型,设计出来的UI稿只有PX标注的.他们也不懂Android的dp和sp单位是怎么回事.这个时候我们Android工程师如果不注意怎么转换的话, ...

  3. OpenCV imread读取jpg图像的一个大坑

    长话短说 版本区间[OpenCV3.0.0, OpenCV3.4.1]内的OpenCV,(至少在windows下,使用官方提供的预编译版本),imread读取jpg图片后的像素值,和版本区间[Open ...

  4. golang 如何将imagemagick 和golang 打包到docker 环境中

    公司最近开发了个项目,用到了imagemagick 和golang 环境,在我本地机上开发妥妥的,结果准备部署到线上环境的时候,出现了大坑,尝试了无数次后,最后还是解决了,官方说有问题也不说清楚点,一 ...

  5. A tuple is defined as a function

    In James Munkres "Topology", the concept for a tuple, which can be \(m\)-tuple, \(\omega\) ...

  6. Crypto支付宝模块的安装

    沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info 1.将Crypto放到site-packages下 2.OSErro ...

  7. ionic2自定义radio样式

    刚开始以为用的是字体图标,结果翻了代码一看竟然是通过纯css实现的,图标模式用的是ios,代码如下: .radio-ios .radio-checked { margin:; border-radiu ...

  8. python面试必问 知识整理

      一 数据类型 1 数字 整型与浮点型   #整型int 作用:年纪,等级,身份证号,qq号等整型数字相关 定义: age=10 #本质age=int(10) #浮点型float 作用:薪资,身高, ...

  9. 设计模式之架构型MVC,MVP,MVVM模式

    一.MVCMVC,Model View Controller,是软件架构中最常见的一种设计模式,简单来说就是通过Controller的控制去操作Model层的数据,并且返回给view层展示.View跟 ...

  10. Node.js c++ 扩展之HelloWorld

    测试环境 vs:vs2017 node.js:9.9.6 相关地址 官方文档对应地址:https://www.nodejs.org/api/addons.html 官方案例对应地址:https://w ...