#include <bits/stdc++.h>

using namespace std;
const int maxn = 50005;
int num = 0;
struct node
{
int *elem;
int len;
};
void Creatlist(struct node &list, int n)
{
list.elem=new int[maxn];
if(!list.elem)
exit(OVERFLOW);
for(int i=1; i<=n; i++)
{
scanf("%d",&list.elem[i]);
list.len++;
}
}
int get_ans(struct node &list, int l, int r)
{
num ++;
int sum1, sum2, sum3, sum4, mav3, mav4;
if(l == r)
{
if(list.elem[l] < 0)
return 0;
else
return list.elem[l];
}
int m = (l + r) / 2;
sum1 = get_ans(list, l, m);
sum2 = get_ans(list,m + 1, r);
sum3 = sum4 = 0;
mav3 = mav4 = 0;
for(int i = m; i >= l; i --)
{
sum3 += list.elem[i];
mav3 = max(mav3,sum3);
}
for(int i = m + 1; i <= r; i ++)
{
sum4 += list.elem[i];
mav4 = max(mav4,sum4);
}
int ans = 0;
ans = max(sum1, sum2);
ans = max(ans, mav3 + mav4);
return ans;
} int main()
{
int n;
struct node list;
scanf("%d",&n);
Creatlist(list, n);
num = 0;
int ans = get_ans(list,1,n);
printf("%d %d\n", ans, num);
return 0;
}

顺序表应用7:最大子段和之分治递归法(SDUT 3664)的更多相关文章

  1. 顺序表应用8:最大子段和之动态规划法(SDUT 3665)

    Problem Description 给定n(1<=n<=100000)个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a ...

  2. jdk顺序表笔记

    一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...

  3. c++顺序表基本功能

    头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...

  4. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  5. 《数据结构》2.2顺序表(sequence list)

    //顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...

  6. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  7. java顺序表和树的实现

    一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...

  8. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  9. 顺序表C语言版

    #include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...

随机推荐

  1. 怎样理解数组的空元素empty与undefined的区别

    数组的空元素empty表示空位, 它不是一种数据类型, 而是由于人为修改arr.length 或者写入时多写了逗号造成的. var arr = [1,2,3,4,,,5]; arr.length; a ...

  2. Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化

    本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/BWpy3F-nEKXCdVXmY3GYZg 当然还有更多R语言,生物信息学相关知识...

  3. 音视频入门-03-RGB转成BMP图片

    * 音视频入门文章目录 * BMP 文件格式解析 BMP 文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 位图文件头(14个字节) 位图信息头(40个字节) 颜色信息 图形数据 文件头与信息 ...

  4. java封装数据类型——Integer 缓存策略验证

    上一篇学习 Integer 类型源码,知道了它使用缓存策略,默认对 [-128, 127] 范围的对象进行类加载时自动创建缓存. Integer 源码学习:https://www.cnblogs.co ...

  5. 9.Redis的Java客户端Jedis

    Redis的Java客户端Jedis Jedis所需jar包   commons-pool-1.6.jar jedis-2.1.0.jar 1.Jedis常用操作(jedis中的api 和 我们在 l ...

  6. tr 命令详细介绍

    tr用来从标准输入中对字符进行操作,主要用于删除文件中指定字符.字符转换.压缩文件字符. 我们可以用:tr --help查看一下系统详细介绍 [root@bqh-118 scripts]# tr -- ...

  7. HTML之表格标签和form表单

    表格标签: table 一般用于信息展示 tr行 td文本单元格 th标题单元格(文本加粗) table属性: cellspacing:单元格间距,一般设置为0 cellpadding:文字到边框的距 ...

  8. 关于js里的布尔值判断

    第一种if(a)a为以下值时转换为false   false undefined null 0 -0 NaN ""

  9. Jupyter notebook部署引导

    一.简介方面很多博客写得比较好,主要转发几篇: 1.对Jupyter notebook 的整体进行介绍: https://www.itcodemonkey.com/article/6025.html ...

  10. .netFramework中新增的功能—.net最新信息—.net的发展

    关键字:.NET Framework 中的新增功能 链接地址:https://docs.microsoft.com/zh-cn/dotnet/framework/whats-new/index 链接地 ...