P1115 最大子段和

题目描述

给出一段序列,选出其中连续且非空的一段使得这段和最大。

输入输出格式

输入格式:

输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度。

第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列。

输出格式:

输入文件maxsum1.out仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。

输入输出样例

输入样例#1:

7
2 -4 3 -1 2 -4 3
输出样例#1:

4

说明

【样例说明】2 -4 3 -1 2 -4 3

【数据规模与约定】

对于40%的数据,有N ≤ 2000。

对于100%的数据,有N ≤ 200000。

  可以看出来是一道dp题,转移方程很好找, f[i] = max(f[i-1], 0) + a[i]

  边界条件是f[0] = 0            为什么要和0作比较,因为如果比0小,那么这个字段和活着也是挺失败的,不如重修2333

  AC①: dp(48ms)

 1 #include <cstdio>
 2 #include <algorithm>
 3
 4 int a[200005];
 5 int f[200005];
 6
 7 int main()
 8 {
 9     int n;
10     scanf("%d", &n);
11     for(int i=1; i<=n; i++)
12         scanf("%d", &a[i]);
13
14     for(int i=1; i<=n; i++)
15         f[i] = std::max(f[i-1], 0) + a[i];
16
17     int maxx = -1234567;
18     for(int i=1; i<=n; i++)
19             if(f[i] > maxx)
20                 maxx = f[i];
21
22     printf("%d", maxx);
23     return 0;
24 }

  还可以用贪心的思路做

  AC②: (贪心 36ms)

 1 #include <cstdio>
 2
 3 int main()
 4 {
 5     int n, a, b, maxx;
 6     scanf("%d", &n);
 7     b = maxx = -1234567;    // b表示前几个字段和最大值
 8     for(int i=1; i<=n; i++)
 9     {
10         scanf("%d", &a);
11         if(b < 0)    b = a;    // 如果b<0 那么不如直接重开
12         else b += a;    // b>=0 说明前面的字段和比较大 可以继续加下去
13         if(b > maxx) maxx = b;
14     }
15     printf("%d", maxx);
16     return 0;
17 }

转载于:https://www.cnblogs.com/yBaka/p/7397260.html

Luogu P1115 最大子段和(dp 贪心)相关推荐

  1. Luogu P1115 最大子段和

    原题传送门 #include <bits/stdc++.h> using namespace std;int num,number[200005],max_prefix_subsegmen ...

  2. P1115 最大子段和(python3实现)

    最大子段和 - 洛谷 """P1115 最大子段和(python3实现) https://www.luogu.com.cn/problem/P1115"&quo ...

  3. 洛谷 P1115 最大子段和

    [题目链接] 洛谷 P1115 最大子段和 [题目考点] 1. 动态规划:线性动规 最大子段和 [解题思路] 解法1:线性动规 子段或子串指的是序列中连续的多个元素,子序列是指序列中可以不连续的多个元 ...

  4. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  5. 【BZOJ3174】【codevs25442075】拯救小矮人,DP+贪心

    Time:2016.07.19 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 传送门3 思路: 比较神的DP "贪心确定DP的状态"--reflash 写了 ...

  6. UVA10074 Take the Land【最大子段和+DP】

    The poor man went to the King and said, "Lord, I cannot maintain my family. Please give me some ...

  7. Bailian2766 最大子矩阵【最大子段和+DP】

    最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 ...

  8. NUC1157 To the Max【最大子段和+DP】

    To the Max 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 Given a two-dimensional array of positive ...

  9. 51Nod-1051 最大子矩阵和【最大子段和+DP】

    1051 最大子矩阵和 基准时间限制:2秒 空间限制:131072KB 分值:40难度:4级算法题 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如 ...

最新文章

  1. python打印汉字宝塔_利用宝塔+python+搭建falsk项目_详(一)
  2. 你不知道的Javascript之原型
  3. 2020年6月学术会议变动汇总
  4. java全文检索的框架_lucene框架全文检索搜索引擎方案
  5. tensorflow中的正则化解决过拟合问题
  6. My Account dependency /UI5/CL_UI5_APP_INDEX_LREP~UI5_INFO_FETCH_FROM_DB strange manifest.json
  7. zz JNI学习(一)、JNI简介和HelloWorld示例
  8. AcWing 1303. 斐波那契前 n 项和
  9. (八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据
  10. linux中c语言延时毫秒函数,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  11. php mysql设计中验证码的实现_利用PHP绘图函数实现简单验证码功能
  12. Android跳转到拨打电话的页面
  13. spring 常用注解汇总
  14. 《代码整洁之道:程序员的职业素养》一一1.1 清楚你要什么
  15. web攻击之一:XSS跨站脚本
  16. 省份和城市的级联下拉菜单
  17. outlook2007打开eml格式文件
  18. 考虫四级词汇思维导图
  19. Glide控制显示图片上方2个圆角(或4个都是圆角)
  20. ThreeJS - 直接设置Fbx模型的某个关节的位移和旋转值

热门文章

  1. ubuntu server修改系统时区和系统时间
  2. CImage类的用法(转帖)
  3. Linux设备驱动之Kobject、Kset
  4. Taro+react开发(39)taro中model使用
  5. [vue] vue的属性名称与method的方法名称一样时会发生什么问题?
  6. 工作336:uni-ele-el-table修改宽度问题
  7. 工作292:修改父子组件传值错误
  8. “约见”面试官系列之常见面试题第六篇说说弹性布局(建议收藏)
  9. 前端学习(1430):ajax封装五
  10. 前端学习(1161):箭头函数02