最近想学DP,锻炼思维,记录一下自己踩到的坑,来写一波详细的结题报告,持续更新。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003

Problem Description

Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.

Input

The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed(all the integers are between -1000 and 1000).

Output

For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.

Sample Input

2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5

Sample Output

Case 1: 14 1 4 Case 2: 7 1 6

Author

Ignatius.L

Recommend

We have carefully selected several similar problems for you:  1069 2084 1058 1421 1024

这一个题是一个基本题型,先分析数据这点很重要,刚刚踩坑,这里每个ai大于-1000,小于1000,那么min为-1e3*1e5,也就是说求和后最小值最大值为1e8量级,那么比较时最大最小值一定设置比这个量级大或在这个量级最大,而我没考虑到如果全为负数时的情况。

开始说题目,这个题目找最大子串,对于任意一个元素,它有两种可能性,做上个子串的最后一个字符,作以自己开头的子串的第一个字符,我们这里不考虑当前字符后续字符,因为DP子问题无后效性,那么两种状态到了,我们要找出两种状态分支的条件,如果一个元素跟着前面的大哥混没前途,那就不跟他混了,自立山头,不前面序列的和都小于0,不如自己做开头。即可写出状态转移方程。0)\\ a[i]&if(dp[i-1],这里问什么没写等于0呢,因为题目的要求是找最靠前的左端点,所以这等于号要放到上面,但是我们怎么存储端点呢?一样的状态转移,我跟前面的老大哥们混,我的头头肯定是前面的老大哥,所以那我的老大哥也是这个子序列的第一个,如果这个小团伙没落了,我自立山头,那么后来的人的大哥肯定会是我,所以就有了状态转移方程,再开一维,也可以再开一个数组,我不太建议跑好几遍循环的方法,能简化就简化。

if(dp[i-1][1]<0||i==1) //i==1细节操作,自己想一下
{
dp[i][0]=i;
dp[i][1]=a[i];
}
else
{
dp[i][0]=dp[i-1][0];
dp[i][1]=dp[i-1][1]+a[i];
}

应该没什么要注意了,还有就是 初始化,这是多组输入。

杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)的更多相关文章

  1. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”

    按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...

  2. Help Johnny-(类似杭电acm3568题)

    Help Johnny(类似杭电3568题) Description Poor Johnny is so busy this term. His tutor threw lots of hard pr ...

  3. 杭电oj2093题,Java版

    杭电2093题,Java版 虽然不难但很麻烦. import java.util.ArrayList; import java.util.Collections; import java.util.L ...

  4. 解题报告:hdu1003 Max Sum - 最大连续区间和 - 计算开头和结尾

    2017-09-06 21:32:22 writer:pprp 可以作为一个模板 /* @theme: hdu1003 Max Sum @writer:pprp @end:21:26 @declare ...

  5. HDOJ(HDU).1003 Max Sum (DP)

    HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...

  6. acm入门 杭电1001题 有关溢出的考虑

    最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...

  7. 杭电ACM题单

    杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007 经典问题,最 ...

  8. ACM学习历程—HDU1003 Max Sum(dp && 最大子序列和)

    Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub ...

  9. HDU1003 Max Sum(求最大字段和)

    事实上这连续发表的三篇是一模一样的思路,我就厚颜无耻的再发一篇吧! 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 -------------- ...

随机推荐

  1. Linux 下如何隐藏自己不被发现?

    可能在某些情况下,自己运行的程序不想或者不方便被其他人看到,就需要隐藏运行的进程.或者某些攻击者采用了本文介绍的隐藏技术,也可以让大家看到如何进行对抗. 隐藏有两种方法: kernel 层面,不对用户 ...

  2. idea运行gradle项目报错,找不到符号符号,方向xxxx类未知

    报错: 解决:把build和run设置为idea

  3. spring boot 学习(一)——在idea建立第一个spring boot项目

    1.打开idea->点击file->点击new->点击project->点击Spring Initializr->点击default 2.这是springboot的启动类 ...

  4. coding++:java 线程池概述

    前言: 1):创建一个可缓存线程池 2):创建一个可重用固定个数的线程池,以共享的无界队列方式来运行这些线程. 3):创建一个定长线程池,支持定时及周期性任务执行 4):创建一个单线程化的线程池,它只 ...

  5. 23.1 abstract抽象类案例

    package day2_抽象类; /* * 基础班老湿,就业班老湿 * 共性 * 属性 姓名,年龄,性别 * 行为 讲课 */ public class AbstractTeacherTest { ...

  6. replace into 影响行数

    replace into 影响行数,谈起影响行数,先理解replace into 原理:其是先到表里通过一定规则(单主键或复合主键或唯一索引)找到记录,并且删除,然后在insert into 记录,即 ...

  7. WPF 仿语音播放 自定义控件

    原理很简单,利用Path画一个图,然后用动画进行播放,播放时间由依赖属性输入赋值与控件内部维护的一个计时器进行控制. 控件基本是玩具,无法作为真实项目使用. 非专业UI,即使知道怎么画图也是画的不如意 ...

  8. MySQL的单表查询

    单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having筛选 order by 关键字执行的优先级: ...

  9. react-devtools安装调试

    初学react,Chrome F12调试,需要一款插件react-devtools. 网上大多对于翻墙不利索的同学大多才用了git源码.npm本地手动打包Chrome拓展程序.如:https://ww ...

  10. Maven+JSP+SSM+Mysql+C3P0实现的学生管理系统

    项目简介 项目来源于:https://gitee.com/wu_yun_long/student_management_system 本系统是基于Maven+JSP+SSM+Mysql+C3P0实现的 ...