最大连续和

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

比赛描述

给出一个长度为n的序列A1,A2,…,An,求最大的连续和。要求找到1≤i≤j ≤n,使得Ai+Ai+1+…+Aj尽量大。

输入

第1行输入一个正整数n(n≤1000),此后输入n行,每行给出一个测试用例,包含正整数m和m个整数,以空格分隔各个数。

输出

输出n行。对于每一个测试用例,在一行输出最大的连续和。

样例输入

2
3 1 -1 3
3 1 2 3

样例输出

3
6

题目来源

刘汝佳《算法竞赛入门经典》

思路:好多OJ上都有这道题,也算是个典型问题吧~~如果要枚举是不可行的,会超时。递推效率会提高但也会超时。最好的还是递归分治没有超时。在蓝桥杯的OJ上也有这道题,同样三种思路测了一下,前两种都是超时的。

 #include <cstdio>
#include <algorithm>
#include <cstring>
#define MAX 100000 + 10
using namespace std; int A[MAX];
int maxsum( int *A, int x, int y )
{
int v, L, R, max;
if( y - x == ) return A[x];
int m = x + ( y - x ) /;
int maxs = std::max( maxsum( A, x, m ), maxsum( A, m, y ) );
v = ;
L = A[m - ];
for( int i = m - ; i >= x; i-- )
L = std::max( L, v += A[i] );
v = ;
R = A[m];
for( int i = m; i < y; i++ )
R = std::max( R, v += A[i] );
return std::max( maxs, L + R );
} int main()
{
int n, i;
scanf( "%d", &n );
//char ch;
while( n > ) {
int m;
scanf( "%d", &m );
for( i = ; i < m; i++ ) {
scanf( "%d", &A[i] );
}
int sum = maxsum( A, , m );
printf( "%d\n", sum );
n--;
}
return ;
}

NOJ1142-最大连续和的更多相关文章

  1. Redis简单案例(三) 连续登陆活动的简单实现

    连续登陆活动,或许大家都不会陌生,简单理解就是用户连续登陆了多少天之后,系统就会送一些礼品给相应的用户.最常见的 莫过于游戏和商城这些.游戏就送游戏币之类的东西,商城就送一些礼券.正值国庆,应该也有不 ...

  2. C# if中连续几个条件判断

    C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...

  3. L1-006. 连续因子

    https://www.patest.cn/contests/gplt/L1-006 题目地址 在上面 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就 ...

  4. [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列

    Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...

  5. [LeetCode] Consecutive Numbers 连续的数字

    Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | ...

  6. [LeetCode] Longest Consecutive Sequence 求最长连续序列

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  7. linux Mint18 backspace怎么不能连续删除

    打开菜单--->首选项--->键盘,如下图所示: 打开启用重复按键即可,就可以随心所欲的连续删除,连续移动光标了

  8. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

  9. lintcode循环数组之连续子数组求和

    v 题目:连续子数组求和 II 给定一个整数循环数组(头尾相接),请找出一个连续的子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.如果多个答案,请返回其中任意一个. ...

  10. lintcode 最长上升连续子序列 II(二维最长上升连续序列)

    题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 I ...

随机推荐

  1. CSS3里的常用选择器总结

    选择器       属性选择器:  img[src="images/2.jpg"]               开头匹配:  a[href ^="page/"] ...

  2. Android开发-API指南-<uses-sdk>

    <uses-sdk> 英文原文:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html 采集(更新 ...

  3. LICEcap GIF 屏幕录制工具

    LICEcap 是一款屏幕录制工具,支持导出git动画图片格式,简单好用.大小只有几百KB   运行之后,可以随意调整大小,右下角有开始/停止按钮.      压缩包:http://files.cnb ...

  4. org.springframework.jdbc.BadSqlGrammarException

    org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLExc ...

  5. SVN中文件属性

    从SVN中checkout代码,然后设置crontab 定时执行脚本,发现permission denied 查看发现脚本没有可执行权限 但是,之前项目中的代码是有该权限的,于是猜想应该可以对SVN中 ...

  6. bzoj1433: [ZJOI2009]假期的宿舍

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2286  Solved: 969[Submit][Stat ...

  7. 华为OJ平台——首次不重复字符

    题目描述: 输入一个字符串,输出字符串中第一个没有重复的字符,若没有满足条件的字符存在,则输出“.” 思路: 这题很简单,直接逐次比较就好了,但是没有考虑到更好效率的方法,以后想到的话再加上来 imp ...

  8. 如何利用百度地图JSAPI画带箭头的线?

    百度地图JSAPI提供两种绘制多折线的方式,一种是已知多折线经纬度坐标串通过AddOverlay接口进行添加:另一种是通过在地图上鼠标单击进行绘制(鼠标绘制工具条库).目前这两种方式只能绘制多折线,并 ...

  9. 使用SurfaceView播放RGB原始视频-2016.01.22

    1 程序代码 使用Android中的SurfaceView播放RGB视频数据,SufaceView播放代码如下: package com.zhoulee.surfaceviewdemo; import ...

  10. sqlmap.config 配置

    <?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http:/ ...