HDU 1003 Maxsum
题目大意:求出数列的最大子段和,并且说明是从第几项至第几项。
题解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相关推荐
- hdu 1003 Max Sum 解题报告
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...
- HDU.1003 Max Sum
原题 HDU.1003 Max Sum 分类 动态规划 题意 计算从一个序列中最大连续子序列和.对应的起始元素和终止元素的位置. 输入/输出 要求与格式 样例数的确定 最开始一行开始输入样例数 每个样 ...
- HDU 1003——Max Sum(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目大意:历遍所有数字,找出最大字段和. 解题思路: t和n:记录循环次数和每一段有多少个数字 ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- 杭电 hdu 1003
Max Sum: 本题同样没有AC,解题思路很简单. #include<iostream> #include<string.h> using namespace std; #d ...
- [hdu 1003] Max Sum
跟<算法导论(第三版)>上的一样,抄下来的 30 - 60 ms 标准的分治策略 1 #include <stdio.h> 2 3 int A[100000], Lenght; ...
- hdu 1003 dp
确实十分经典的一题,但我是参照dicuss 的题目做的,真是惭愧啊, 希望可以多接触些dp类型的题,提高自己水平 格外注意 sum 的代表含义, #include<iostream> #i ...
- 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 ...
- hdu 1003 A + B Problem II 使用整型数组轻松实现大数求和
为题如下: Problem Description I have a very simple problem for you. Given two integers A and B, your job ...
最新文章
- java 区块链使用_使用Java创建第一个区块链
- python一个类调用另一个类的方法_python 类静态方法实例化另一个类对象的问题?...
- bzoj2339[HNOI2011]卡农 dp+容斥
- Hadoop集群扩展子节点
- 元素、属性、标题、段落、文本格式化
- 同步异步多线程这三者关系,你能给面试官一个满意的回答吗?
- cvsHelper--C#关于CSV文件的导入和导出以及转化
- python 会计凭证_实际工作中,大多数单位都使用单式记账凭证。()
- 25岁该有多少存款?数据分析带你揭露打工人的工资真相
- 次数匹配(不需要在前面加“\”)
- Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
- 我背着女朋友,用 Python 偷偷抓取了她的行踪(单身狗勿进)
- ResNet再进化!重新思考ResNet:采用高阶方案的改进堆叠策略
- 高纬度思考法读书笔记
- c语言最新标准c22,【C语言实例】c22-选择分支结构.doc
- 免费软电话 — X-Lite 的安装及配置向导
- 文本框获取焦点后出现的边框,怎么去掉
- 解决element-ui数字输入框的问题
- python黑屏改成白底_详解Python给照片换底色(蓝底换红底)
- Echarts中太阳图(Sunburst)的实例
热门文章
- Win10最常用的快捷键,效率Max提高100%(常用的应该是最全的)
- hadoop设置ssh免密码登录
- [深度学习] Pytorch中RNN/LSTM 模型小结
- B 树、B+ 树、B* 树
- Linux查看和剔除当前登录用户
- 负数在计算机怎样表示与存储
- 数据管理 - 每天5分钟玩转 Docker 容器技术(147)
- 虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer
- binaryformatter java_Java,C#使用二进制序列化、反序列化操作数据
- python有没有帮助_没想到,python给我的帮助竟然这么大