题目大意:求出数列的最大子段和,并且说明是从第几项至第几项。

题解1:简单贪心。

#include <cstdio>
#define rep(i,n) for(int i=1;i<=n;i++)
int main(){int t,l=0;scanf("%d",&t);while(t--&&++l){if(l!=1)printf("\n");printf("Case %d:\n",l);int a[100001],f[100001]={0};int max,maxl,maxr,l,r,n;scanf("%d",&n);rep(i,n)scanf("%d",&a[i]);l=1; max=-100000;rep(i,n){if (f[i-1]+a[i]<a[i]){f[i]=a[i];l=i;r=i;}else{f[i]=f[i-1]+a[i];r=i;}if(max<f[i]){max=f[i];maxl=l;maxr=r;} }printf("%d %d %d\n",max,maxl,maxr);}return 0;
}

题解2:单调队列

#include <cstdio>
using namespace std;
int a[100005],s[100005],num[100005];
int T,n,m,st,ed,h,t,maxs;
int main(){int cnt=0;scanf("%d",&T);while(T--){scanf("%d",&n);int i,j,k; s[0]=0;  for(int i=1;i<=n;i++)scanf("%d",&a[i]),s[i]=s[i-1]+a[i];h=1; t=0; maxs=~0U>>1; maxs=-maxs;for(int i=1;i<=n;i++){while(h<=t&&s[num[t]]>s[i-1])t--;num[++t]=i-1;if(s[i]-s[num[h]]>maxs){maxs=s[i]-s[num[h]];st=num[h]+1; ed=i;}}if(cnt)puts("");printf("Case %d:\n",++cnt);if(st>n)st=st-n; if(ed>n)ed=ed-n;printf("%d %d %d\n",maxs,st,ed);}return 0;
}

转载于:https://www.cnblogs.com/forever97/p/3529165.html

HDU 1003 Maxsum相关推荐

  1. hdu 1003 Max Sum 解题报告

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...

  2. HDU.1003 Max Sum

    原题 HDU.1003 Max Sum 分类 动态规划 题意 计算从一个序列中最大连续子序列和.对应的起始元素和终止元素的位置. 输入/输出 要求与格式 样例数的确定 最开始一行开始输入样例数 每个样 ...

  3. HDU 1003——Max Sum(动态规划)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目大意:历遍所有数字,找出最大字段和. 解题思路: t和n:记录循环次数和每一段有多少个数字 ...

  4. hdu 1003 Max Sum (DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)   ...

  5. 杭电 hdu 1003

    Max Sum: 本题同样没有AC,解题思路很简单. #include<iostream> #include<string.h> using namespace std; #d ...

  6. [hdu 1003] Max Sum

    跟<算法导论(第三版)>上的一样,抄下来的 30 - 60 ms 标准的分治策略 1 #include <stdio.h> 2 3 int A[100000], Lenght; ...

  7. hdu 1003 dp

    确实十分经典的一题,但我是参照dicuss 的题目做的,真是惭愧啊, 希望可以多接触些dp类型的题,提高自己水平 格外注意 sum 的代表含义, #include<iostream> #i ...

  8. hdu 1003 Max Sum

    DP可以这里给出非DP程序 题目传送门 1 #include<stdio.h> 2 int main() 3 { 4 int t,n,i,max,m,sum,ki,kj,k,a,b; 5 ...

  9. hdu 1003 A + B Problem II 使用整型数组轻松实现大数求和

    为题如下: Problem Description I have a very simple problem for you. Given two integers A and B, your job ...

最新文章

  1. java 区块链使用_使用Java创建第一个区块链
  2. python一个类调用另一个类的方法_python 类静态方法实例化另一个类对象的问题?...
  3. bzoj2339[HNOI2011]卡农 dp+容斥
  4. Hadoop集群扩展子节点
  5. 元素、属性、标题、段落、文本格式化
  6. 同步异步多线程这三者关系,你能给面试官一个满意的回答吗?
  7. cvsHelper--C#关于CSV文件的导入和导出以及转化
  8. python 会计凭证_实际工作中,大多数单位都使用单式记账凭证。()
  9. 25岁该有多少存款?数据分析带你揭露打工人的工资真相
  10. 次数匹配(不需要在前面加“\”)
  11. Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
  12. 我背着女朋友,用 Python 偷偷抓取了她的行踪(单身狗勿进)
  13. ResNet再进化!重新思考ResNet:采用高阶方案的改进堆叠策略
  14. 高纬度思考法读书笔记
  15. c语言最新标准c22,【C语言实例】c22-选择分支结构.doc
  16. 免费软电话 — X-Lite 的安装及配置向导
  17. 文本框获取焦点后出现的边框,怎么去掉
  18. 解决element-ui数字输入框的问题
  19. python黑屏改成白底_详解Python给照片换底色(蓝底换红底)
  20. Echarts中太阳图(Sunburst)的实例

热门文章

  1. Win10最常用的快捷键,效率Max提高100%(常用的应该是最全的)
  2. hadoop设置ssh免密码登录
  3. [深度学习] Pytorch中RNN/LSTM 模型小结
  4. B 树、B+ 树、B* 树
  5. Linux查看和剔除当前登录用户
  6. 负数在计算机怎样表示与存储
  7. 数据管理 - 每天5分钟玩转 Docker 容器技术(147)
  8. 虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer
  9. binaryformatter java_Java,C#使用二进制序列化、反序列化操作数据
  10. python有没有帮助_没想到,python给我的帮助竟然这么大