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

【报告】

既然是子区间加和问题,可以用减法来处理。比如求[5..10]的和,可以直接用[1..10]的和剪掉[1..4]的和。这个很常用,也很有用;

不过暴力首尾肯定是要TLE的,那么来分析一下题目。

先求出[1..n]的和,记为s[n],那假设我们需要的Max Sum就是[A..B]段。显然,s[B]是第A位之后S最大的一项。所以接下来的问题是,对于一个A,求出B。

我们可以用一个指示数组P[i],来指示第i位之后的最大项的位置。然后枚举i,求出差值的最大值,就是最后的答案了。

这个指示数组的构造就不用说了吧,很简单的……

至此,完美AC。

【程序】

// TASK: 1003 Max Sum
#include <cstdlib>
#include <iostream>
#include <cstdio>
#define N 100000
using namespace std;
long s[N+1],p[N+1];
long n;
long S,B,E;
int main(int argc, char *argv[])
{
    long t;
    cin >> t;
    bool first=true;
    for (long dex=1;dex<=t;dex++)
    {
        if (!first) cout << endl;
        first=false;
        cin >> n;
        memset(s,0,sizeof(s));
        B=E=0;
        S=-2147483647;
        for (long i=1;i<=n;i++)
        {
            cin >> s[i];
            s[i]+=s[i-1];
            p[i]=i+1;
        }
        p[n]=n;
        p[0]=1;
        for (long i=n-1;i>=0;i--)
            if (s[p[i]]<s[p[i+1]])
               p[i]=p[i+1];
        for (long i=0;i<n;i++)
            if (S<s[p[i]]-s[i])
            {
               S=s[p[i]]-s[i];
               B=i+1;
               E=p[i];
            }
        cout << "Case " << dex << ":" << endl;

【HDOJ】1003 Max Sum_天涯浪子_新浪博客相关推荐

  1. 【HDOJ】4704 Sum_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...

  2. 【HDOJ】4699 Editor_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...

  3. 【HDOJ】4602 Partition_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...

  4. 【HDOJ】1008 Elevator_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...

  5. 【HDOJ】4768 Flyer_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...

  6. 【HDOJ】1015 Safecracker_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...

  7. 【HDOJ】1020 Encoding_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...

  8. 【HDOJ】4608 I-number_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4608 [报告] 最直接的,一个很简单粗暴的思路,就是1个1个加上去,加的时候和进位的时候维护一下整个数的 ...

  9. 【HDOJ】1032 The 3n + 1 problem_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=1032 [报告] 直接暴力题.不过最后还是用了记忆化搜索.总感觉直接暴力会TLE.网上有大神用线段树做的 ...

最新文章

  1. 6大理由,告诉你为什么这个大会你不能错过! | 文末有福利
  2. 让PasswordRecovery控件使用Email地址找回密码
  3. golang中的strings.HasPrefix
  4. hive复合数据类型之array
  5. 打包node服务端_如何基于NodeJS从零构建线上自动化打包工作流?
  6. bootstrap-table使用 带条件查询翻页及数据更新的问题。
  7. MySQL 取得两个时间相差的分钟数 及 常用时间函数
  8. 实习语录@秒针系统[上]
  9. pdf报表的制作入门,JasperReport
  10. 小程序源码:独立后台带分销功能月老办事处交友盲盒
  11. at24c256读写linux,AT24C256写不进去
  12. 自己动手,解决微信投票提示“投票失败”问题
  13. 用友杨雨春 融合是企业互联网化的下一个主旋律
  14. 小白学习性能随笔记1
  15. 阿里云短信服务(申请与代码)
  16. 小程序 - 接入支付宝预授权支付 笔记
  17. android 开发积累
  18. 从B站、爱奇艺、映客的IPO上市,看国内视频公司的内容审核现状
  19. PandoraBox登录无法后台,出现/usr/lib/lua/luci/dispatcher.lua:461(2021-12-19亲测)
  20. 仿天猫商城html网页源码

热门文章

  1. 如何无损压缩视频?良心分享4个视频压缩工具,超好用
  2. 色情图片识别--代码分析
  3. 开源的在线MIDI编辑器signal
  4. EasyNVR直播录像呈现片段式显示与什么有关?
  5. 精仿CNZZ网站访客统计系统源码 | 网页访客抓取采集源码 | 网站访客流量统计源码
  6. 通信原理循环码基本原理
  7. STM32之GPIO_Mode定义和区别
  8. java的char泛型_Java语言中的泛型
  9. 安卓开发——微信UI界面
  10. 学生书桌护眼灯哪个牌子好?光照不刺眼的智能护眼台灯