最大连续子序列和(DP)
DP入门_最大连续子序列(最大连续和)
Description
有一条崎岖的山路,该山路被分成了n段(1<=n<=100,000),每段山路的驾驶体验不同。作为老司机的刘师傅给每段山路打分。
分值越高,表示驾驶体验越好;分值越低,表示驾驶体验越差。
例如,有一条山路被划分成6段,每段的驾驶体验值分别是:
{ -2,11,-4,13,-5,-2 },其中驾驶体验值总和最大的一段为红色数字表示:
{ -2,11,-4,13,-5,-2 },最大连续驾驶体验值和为20。
现在要求,输入一串数字(表示山路分的段值),输出最大连续驾驶体验值。
Input
第一行,输入n。表示有n段山路。
第二行,输入n个数字,空格隔开。表示每段的驾驶体验值。
Output
输出一个整数,表示最大连续体验值。
先上代码:
1 #include<iostream>
2 #include<cmath>
3 using namespace std;
4 int a[1000001];
5 int f[1000001];
6 int maxn=-1;
7 int main()
8 {
9 int n;
10 cin>>n;
11 for(int i=1;i<=n;i++)
12 {
13 cin>>a[i];
14 }
15 f[1]=a[1];
16 for(int i=1;i<=n;i++)
17 {
18 f[i]=max(f[i-1]+a[i],a[i]);
19 maxn=maxn>f[i]? maxn:f[i];
20 }
21 cout<<maxn;
22 return 0;
23
24 }
其实题目讲的就是在一个数组中找到某几个连续的数使得它们的和最大,针对这样的题,当然使用DP啦
先输入他们,f[i]数组代表是 i 状态时的最好方案(最大的和),值得注意的是,f[1]的状态就是a[i],因为就他一个。,我们现在的主要任务就是寻找此问题的状态转移方程,
仔细想想,我们会发现,我们想要求得的第i个状态的最好方案无非就两种,要么加他,要么不加他,再取个max就好了。
得到:f[i]=max(f[i-1]+a[i],a[i])
下面就顺水推舟的出来了
2022/3/17
最大连续子序列和(DP)的更多相关文章
- HDU 1231 最大连续子序列 --- 入门DP
HDU 1231 题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同. /* HDU 1231 最大连续子序列 --- 入门DP */ #inclu ...
- HDU 1231——最大连续子序列(DP)
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 最大连续子序列(DP)
Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j < ...
- HDU 1231:最大连续子序列(DP)
pid=1231">最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- HDU 1231 最大连续子序列 (dp)
题目链接 Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= ...
- 九度OJ 1011:最大连续子序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, N ...
- 最长连续子序列(dp,分而治之递归)
5227: 最大子列和问题 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 76 测试通过:46 描述 给定KK个整数组 ...
- hdu 1003 hdu 1231 最大连续子序列【dp】
HDU1003 HDU1231 题意自明.可能是真的进步了点,记得刚开始研究这个问题时还想了好长时间,hdu 1231还手推了很长时间,今天重新写干净利落就AC了. #include<iostr ...
- [程序员代码面试指南]最长递增子序列(二分,DP)
题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长 ...
- 最大连续子序列乘积(DP)
题目来源:小米手机2013年校园招聘笔试题 题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 输入: 输入可能包含多个测试样例.每个测试样例的第一行仅包含正整数 ...
随机推荐
- JSP页面 CTRL+F 功能实现
.res { color: rgba(255, 0, 0, 1) } .result { background: rgba(255, 255, 0, 1) } --- js 部分 var oldKey ...
- C++改变数组长度
C++改变数组长度 代码 //改变数组长度 #ifndef CHANGELENGTH1D_H #define CHANGELENGTH1D_H #include<stdexcept> #i ...
- 帆软报表(finereport)使用Event 事件对象 (target)修改提示框样式
target 事件属性 Event 对象 定义和用法 target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素.文档或窗口. 语法 event.target 定义结束事件Jav ...
- linux下gdb如何处理coredump错误
linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...
- IDEA一键部署SpringBoot项目到服务器
1. 安装Alibaba Cloud Toolkit插件 2. 配置部署环境 2.1 为本次部署设置一个名字 2.2 选择被部署文件的生成方式 IDEA提供了三种方式:Maven Build,Uplo ...
- 详细介绍rar是什么由谁发明
RAR是一种专利文件格式,用于数据紧缩与归档打包,开发者为尤金·罗谢尔(俄语:Евгений Лазаревич Рошал,拉丁转写:Yevgeny Lazarevich Roshal),RAR的全 ...
- 思科VTP协议(后面有配置案例)
一.VTP相关理论介绍 1.1 VTP(VLAN trunking protocol)协议是用来在整个交换网络中分发和同步VLAN数据库的,是一个二层协议,思科私有协议. 1.2 VTP域是由一台或者 ...
- web安全之cookie伪造
我们注册一个用户登陆上 Cookie都是351e766803开头 我们猜把351e766803后面的值改成admin的md5值 351e766803 21232f297a57a5a743894a0e4 ...
- [c/c++]c++控制台操作(基本操作的代码)
本文转自:http://blog.csdn.net/stude/article/details/7645056 控制台窗口界面编程控制 〇.摘要一.概述二.控制台文本窗口的一般控制步骤三.控制台窗口操 ...
- 力扣第二题 大数相加 ,链表在python到底该怎么写?
但问题在于链表的表示 如何创建一个L3呢 如何用next将他们连接起来呢? 原来是采用 制作链表的形式 l3_pointer.next = ListNode(l1_pointer.val + l2_ ...