【HDOJ】1003 Max Sum_天涯浪子_新浪博客
【题目】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_天涯浪子_新浪博客相关推荐
- 【HDOJ】4704 Sum_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...
- 【HDOJ】4699 Editor_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...
- 【HDOJ】4602 Partition_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...
- 【HDOJ】1008 Elevator_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...
- 【HDOJ】4768 Flyer_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...
- 【HDOJ】1015 Safecracker_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...
- 【HDOJ】1020 Encoding_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...
- 【HDOJ】4608 I-number_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4608 [报告] 最直接的,一个很简单粗暴的思路,就是1个1个加上去,加的时候和进位的时候维护一下整个数的 ...
- 【HDOJ】1032 The 3n + 1 problem_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=1032 [报告] 直接暴力题.不过最后还是用了记忆化搜索.总感觉直接暴力会TLE.网上有大神用线段树做的 ...
最新文章
- 6大理由,告诉你为什么这个大会你不能错过! | 文末有福利
- 让PasswordRecovery控件使用Email地址找回密码
- golang中的strings.HasPrefix
- hive复合数据类型之array
- 打包node服务端_如何基于NodeJS从零构建线上自动化打包工作流?
- bootstrap-table使用 带条件查询翻页及数据更新的问题。
- MySQL 取得两个时间相差的分钟数 及 常用时间函数
- 实习语录@秒针系统[上]
- pdf报表的制作入门,JasperReport
- 小程序源码:独立后台带分销功能月老办事处交友盲盒
- at24c256读写linux,AT24C256写不进去
- 自己动手,解决微信投票提示“投票失败”问题
- 用友杨雨春 融合是企业互联网化的下一个主旋律
- 小白学习性能随笔记1
- 阿里云短信服务(申请与代码)
- 小程序 - 接入支付宝预授权支付 笔记
- android 开发积累
- 从B站、爱奇艺、映客的IPO上市,看国内视频公司的内容审核现状
- PandoraBox登录无法后台,出现/usr/lib/lua/luci/dispatcher.lua:461(2021-12-19亲测)
- 仿天猫商城html网页源码