Description

john想买几个花瓶装饰一下新房。已知花店的花瓶被固定地排成一行并被依次排号,且花店有
一个原则,花瓶不能移动也不能挑选,只能买连号的花瓶。由于每个花瓶都有自己的美学价值,
请你帮john选出其中美学价值最大的一组。
比如,有六个花瓶,它们的美学价值分别是 3 -1 2 4 -6 5,那么john应该选3 -1 2 4(美学价值为8)
这一组。而不能挑2 3 4 5这一组(违犯),或是2 4组(美学价值为6,不是最大)。

Input

测试有很多次,对于每一次测试:
第一行为一个正整数 N( 1 <= N <=10000 ),代表花瓶的个数.当N=0时,代表测试结束;
第二行的N个整数Mi( -100 <= Mi <= 100 )分别代表每个花瓶的美学价值,其间用空格分开。

Output

每次测试输出一行,代表拥有最大美学价值的一组连号花瓶的美学价值MAX。

Sample Input

6
3 -1 2 4 -6 5
0

Sample Output

8


看懂了吗?其实就是问你把这堆数里面的那些数字加起来最大,而且所加的这些数字必须是连续的。

我一直忘记这个名字,要不就叫超级无敌最大连续求和子序列吧。

福哥起的名字,绝对没毛病!

那么这道题目,要怎么求呢?又是从哪里可以看出,这样子的题目,需要用dp呢?

先来理解一下这道题,第一眼看进去,你的思路是怎样的?

你是不是想过,一遍遍地遍历?对不对?因为一组数里面找最大的,找最小的,排序,for循环的遍历用的太熟练了,可是…,那样的复杂度太高。给你一堆数,你需要遍历多少遍的序列才能找到这样的序列?告诉我多少遍?我知道你想都不敢想…

所以包括下面所要说的各种dp问题,几乎都是,你看上去就想着遍历一下(我相信题目做多了之后会有那种很好的感觉,为了避免自己妄加猜测,就不要提前想了,就是讲一下怎么判断这道题是不是用dp的思想),所以不妨大胆的给自己提个醒,告诉自己,其实感觉想用遍历的感觉去做的题目,不妨试一试dp的思想

就像这道题,问你如何去找最大和的子序列,我们不妨想想dp。而dp包括那几个方面?最优子结构,状态转移方程和边界。所以,可以先想一下最优子结构是什么,也就是每一个状态是由什么状态决定的;然后可以写出状态转移方程,最后通过确定边界(也不知道这样的顺序是不是对的,也有可能今后会更正,至少我现在是按照这几个顺序来写的。)。

那么这道题呢?先想一想他的最优子结构是什么。也就是你随便给出一个状态,它是由哪个状态所决定的?(也要考虑所设定的dp数组的意义。)

根据感觉,我们定义一个一维的dp数组,假设dp[i]代表的是在从1~ i 之间,超级无敌最大连续求和子序列的和。

那么,对于dp[ i ]来说,肯定决定他的,只有两种情况:要么,加上前面的那个数地最大递增子序列的和,要么不加它(这个数加上前面的数就会变小,还不如自己一个数大)。

所以,现在就可以顺理成章地写出,
dp[ i ]=max(dp[ i - 1 ] + a[ i ] ,a [ i ] );

写状态转移方程的时候一定要注意:不仅仅要注意这个状态和上一个状态的联系,也要注意这一个状态和下一个状态的联系。

那么,边界呢?

边界无非就是从哪里开始的。说的很神秘的感觉,当时刚学的时候慌得一批。

无非就是dp[ 1 ]。

dp[ 1 ]等于a[ 1 ]就ok了。

那么,这道题的分析过程,就完了,下面粘上自己的AC代码.

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string.h>
#include<iostream>
typedef long long ll;
const int maxn=10010;
using namespace std;
ll m[maxn],dp[maxn];
int main()
{ll n;while(scanf("%lld",&n)!=EOF){if(n==0)break;ll maxx=0;memset(dp,0,sizeof(dp));scanf("%lld",&m[1]);dp[1]=m[1];//边界for(ll i=2;i<=n;i++){scanf("%lld",&m[i]);dp[i]=max(dp[i-1]+m[i],m[i]);//状态转移方程maxx=max(maxx,dp[i]);//选择最大的值}printf("%lld\n",maxx);//输出最大的那个dp[i]值就好了}return 0;
}

ok,我去打球了!

power oj 1027 买花瓶(简单动态规划DP)相关推荐

  1. 买花瓶(简单动态规划DP)

    Description john想买几个花瓶装饰一下新房.已知花店的花瓶被固定地排成一行并被依次排号,且花店有 一个原则,花瓶不能移动也不能挑选,只能买连号的花瓶.由于每个花瓶都有自己的美学价值, 请 ...

  2. (蓝桥杯)数字三角形。。(最简单的dp题)

    (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形 ...

  3. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  4. 【习题详解】动态规划DP:硬币游戏 蛋糕 游荡的奶牛 决斗

    动态规划DP 硬币 蛋糕塔 游荡的奶牛 格斗 硬币 题目描述 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为"Xoinc"的两人硬币游戏. 初始时,一个有N(5 <= N ...

  5. 简单Profibus/DP实验系统的组建

    简单Profibus/DP实验系统的组建 Writed by 远方 DND-DeviceNet 引言: 为了让更多刚接触到Profibus系统的朋友能对Profibus的网络架构及系统运行机制有一个整 ...

  6. 蓝桥杯 算法训练 数字三角形(最简单的DP)

    传送门 题目描述 如下图示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ● ...

  7. Basketball Exercise CodeForces - 1195C(动态规划dp)

    Finally, a basketball court has been opened in SIS, so Demid has decided to hold a basketball exerci ...

  8. 第4课 防卫导弹(第十章 动态规划--DP)

    //progream p10_04 /* 第4课 防卫导弹(第十章 动态规划--DP)  (<聪明人的游戏--信息学探秘 提高篇>) https://blog.csdn.net/weixi ...

  9. 来自wzc的简单拓扑dp

    来自wzc的简单拓扑dp(拓扑DP) 题目已经把解决方案给你了,就是拓扑DP(出题人这回没有耍你,真的) 不过我还是莽了两发dijk贪心QAQ,果然错了(毕竟DP弱者,巨贪心)- 正片开始 有向图拓扑 ...

最新文章

  1. 提升代码内外部质量的22条经验
  2. 【非广告,纯干货】这大概是我看过最有温度的面经分享(已收割京东美团技术专家offer)
  3. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因...
  4. PHP+MySQL登录注册,完整版,详细注释
  5. linux下mysql中文乱码
  6. Nginx支持比Apache高并发的原因
  7. oracle分区表学习及应用
  8. Kotlin 接口(三)
  9. oracle中distinct的正确应用
  10. Bootstrap 轻量级后台管理系统模板--ACE使用介绍
  11. Fedora9 问题集锦
  12. 1336:【例3-1】找树根和child
  13. apkeditor pro_APK编辑器:APK Editor Pro
  14. Python---爬虫---爬取万余张图片,分门别类
  15. 【网格问题】leetcode289.生命游戏
  16. el-form内el-select与el-input纵向不对齐的问题
  17. sql查询 (连表查询)
  18. 解决TinyMCE富文本编辑器上传视频后在编辑区域内不能预览视频,被替换成img标签的问题
  19. 户外运动品牌的PLM 冒险!PLM软件转型升级常见问题
  20. 简单了解认识通信过程中的物理层

热门文章

  1. 手机计算机怎么打错误,极客修:手机计算器集体出错!输入这2个数字,我傻了...
  2. 发上等愿,结中等缘,享下等福;择高处立,寻平处住,向宽处行。
  3. word多次引用同一脚注或尾注
  4. 【2019-07-27】习惯的力量很强大
  5. Server 2019 WSUS安装详细步骤图解教程
  6. 指定wsus服务器,组策略指定 Win10 LTSC 更新地址为 WSUS 服务器
  7. 准确区分“劳务报酬”,个税申报不再出错
  8. 学顶教育:2023年一级建造师报考条件如下
  9. 基于深度学习的超级分辨率,无需使用GAN
  10. SpringBoot-整合Beetlsql及多数据源整理