Luogu P1115 最大子段和(dp 贪心)
P1115 最大子段和
题目描述
给出一段序列,选出其中连续且非空的一段使得这段和最大。
输入输出格式
输入格式:
输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度。
第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列。
输出格式:
输入文件maxsum1.out仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。
输入输出样例
7 2 -4 3 -1 2 -4 3
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 贪心)相关推荐
- Luogu P1115 最大子段和
原题传送门 #include <bits/stdc++.h> using namespace std;int num,number[200005],max_prefix_subsegmen ...
- P1115 最大子段和(python3实现)
最大子段和 - 洛谷 """P1115 最大子段和(python3实现) https://www.luogu.com.cn/problem/P1115"&quo ...
- 洛谷 P1115 最大子段和
[题目链接] 洛谷 P1115 最大子段和 [题目考点] 1. 动态规划:线性动规 最大子段和 [解题思路] 解法1:线性动规 子段或子串指的是序列中连续的多个元素,子序列是指序列中可以不连续的多个元 ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- 【BZOJ3174】【codevs25442075】拯救小矮人,DP+贪心
Time:2016.07.19 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 传送门3 思路: 比较神的DP "贪心确定DP的状态"--reflash 写了 ...
- UVA10074 Take the Land【最大子段和+DP】
The poor man went to the King and said, "Lord, I cannot maintain my family. Please give me some ...
- Bailian2766 最大子矩阵【最大子段和+DP】
最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 ...
- NUC1157 To the Max【最大子段和+DP】
To the Max 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 Given a two-dimensional array of positive ...
- 51Nod-1051 最大子矩阵和【最大子段和+DP】
1051 最大子矩阵和 基准时间限制:2秒 空间限制:131072KB 分值:40难度:4级算法题 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如 ...
最新文章
- python打印汉字宝塔_利用宝塔+python+搭建falsk项目_详(一)
- 你不知道的Javascript之原型
- 2020年6月学术会议变动汇总
- java全文检索的框架_lucene框架全文检索搜索引擎方案
- tensorflow中的正则化解决过拟合问题
- My Account dependency /UI5/CL_UI5_APP_INDEX_LREP~UI5_INFO_FETCH_FROM_DB strange manifest.json
- zz JNI学习(一)、JNI简介和HelloWorld示例
- AcWing 1303. 斐波那契前 n 项和
- (八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据
- linux中c语言延时毫秒函数,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
- php mysql设计中验证码的实现_利用PHP绘图函数实现简单验证码功能
- Android跳转到拨打电话的页面
- spring 常用注解汇总
- 《代码整洁之道:程序员的职业素养》一一1.1 清楚你要什么
- web攻击之一:XSS跨站脚本
- 省份和城市的级联下拉菜单
- outlook2007打开eml格式文件
- 考虫四级词汇思维导图
- Glide控制显示图片上方2个圆角(或4个都是圆角)
- ThreeJS - 直接设置Fbx模型的某个关节的位移和旋转值
热门文章
- ubuntu server修改系统时区和系统时间
- CImage类的用法(转帖)
- Linux设备驱动之Kobject、Kset
- Taro+react开发(39)taro中model使用
- [vue] vue的属性名称与method的方法名称一样时会发生什么问题?
- 工作336:uni-ele-el-table修改宽度问题
- 工作292:修改父子组件传值错误
- “约见”面试官系列之常见面试题第六篇说说弹性布局(建议收藏)
- 前端学习(1430):ajax封装五
- 前端学习(1161):箭头函数02