杭电OJ 1003 Max Sum

2023-11-09

Max Sum

页面数据来自(this page from): http://acm.hdu.edu.cn/showproblem.php?pid=1003

  • Time Limit: 2000/1000 MS (Java/Others)
  • Memory Limit: 65536/32768 K (Java/Others)

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

Statistic | Submit | Discuss | Note

Source Code

#include <iostream>
using namespace std;
int max(int a,int b){ return a>b?a:b; }
int main(){
	int T,N;
	cin >> T;
	for(int i=0;i<T;i++){
		int f[100001],start=0,end=0,big=-1000;
		cin >> N;
		cin >> f[0];
		big = max(f[0],big);
		for(int j=1;j<N;j++){
			cin >> f[j];
			//求和 
 			int sum = f[j-1] + f[j] ; 
 			//如果  sum  大于 f[j] 的本身,且大于0,那么视为增益效果
 			if(sum >= f[j] && sum  >= 0){
 				f[j] = sum;
			}
			big = max(f[j],big);
		}
		//寻找开始和结束的下标
		// f[j] 小于0则视为增益区间结束
		// f[j] 大于0则为增益区间 
		for(int j=0;j<N;j++){
			if(f[j]==big){
				end = j;
				break;
			}
			if(f[j]<0) start=j+1;
		}
		cout << "Case " << i+1 << ':' << endl;
		cout << big << ' ' << start+1 << ' ' << end+1 <<endl;
		if(i<T-1)cout <<endl;
	}
	return 0;
}


自己摸索的算法,不太会 dp 和贪心,大佬们勿喷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

杭电OJ 1003 Max Sum 的相关文章

随机推荐

  • Mysql 复习笔记- 基础篇3 [常见增删改查]

    Mysql 复习笔记 基础篇 3 常见增删改查 声明 此笔记不会出现比如说Mysql发展历史这种问题 多为实用的命令和使用中的必要知识 请海涵 这篇文档我们不会对查询进行复习 我们将会把查询的操作的部分放到了后面的查询文档中 我们将复习到级
  • qt 按钮单击的信号_QPushButton 点击信号分析

    QPushButton 点击信号分析 QPushButton有三个很重要的信号跟点击有关 pressed clicked toggled 表面上看 pressed和clicked都会在点击按钮时触发 它们有什么区别呢 toggled好像有时
  • React18:创建React项目(手动)

    项目结构 常规的React项目需要使用npm 或yarn 作为包管理器来对项目进行管理 并且React官方为了方便我们的开发 为我们提供react scripts包 包中提供了项目开发中的大部分依赖 大大的简化了项目的开发 开发步骤 1 创
  • GPIO口的脚本配置之——全志H3script.bin

    此脚本的作用之一是配置GPIO的默认状态 如 功能 内部电阻状态 驱动能力等 1 但是直接打开script bin 文件则会出现乱码 那么我们怎么才可以打开并更改该脚本的配置呢 在路径uboot kernel orangepi sdk to
  • PyTorch分布式训练进阶:这些细节你都注意到了吗?

    导语 pytorch作为目前主流的深度学习训练框架之一 可以说是每个算法同学工作中的必备技能 此外 pytorch提供了极其方便的API用来进行分布式训练 由于最近做的工作涉及到一些分布式训练的细节 在使用中发现一些之前完全不会care的点
  • cnn 验证集 参与训练吗_使用Sentencepiece +CNN进行文本分类

    1 前言 Sentencepiece是google开源的文本Tokenzier工具 其主要原理是利用统计算法 在语料库中生成一个类似分词器的工具 外加可以将词token化的功能 对比开源的分词器 它会将频繁出现的字符串作为词 然后形成词库进
  • 简而易懂的CPU和MMU画图讲解

    我们知道 程序文件一般放在硬盘上 当把程序运行起来时 程序被放入内存中 通过内存放入cache 通过cache进入cpu 下图中预取器就是负责从cache取出指令 然后由译码器译码 译码的作用就是要知道需要哪些寄存器配合完成指令 如该指令是
  • 对比学习损失 InfoNCE

    对比学习损失 Contrastive Learning Loss 是一种用于自监督学习的损失函数 它侧重于学习一个特征空间 其中相似的样本被拉近 而不相似的样本被推远 在二分类任务中 对比学习损失可以用来学习区分正负样本的特征表示 下面是使
  • 连 JetBrains 都在劝你用正版软件

    https www qikqiak com post free use jetbrains ide https blog csdn net cygcsdn article details 88313512
  • 要想“掌握”自己的命运,就要学会“把控”自己

    近期发生的新闻热点再度引发公众对稳定情绪和心理健康的关注 有时候我们遇到的最大的敌人 不是运气也不是能力 而是失控的情绪和口无遮拦的自己 如何在工作中保持稳定的情绪 谈谈你的看法 作为新时代的打工人 因何会情绪波动 工作中的情绪波动因个人
  • 【计算机科学】【2019】基于深度学习的车辆相关场景理解

    本文为新西兰奥克兰理工大学 作者 Xiaoxu Liu 的硕士论文 共110页 自动驾驶技术是未来交通发展的必然趋势 也是人工智能领域的杰出成就之一 主要是深度学习对自动驾驶的发展做出了重大贡献 深度学习不仅能促进自主车辆感知 识别周围环境
  • Acwing789. 数的范围

    Acwing789 数的范围 题目描述 代码展示 题目描述 代码展示 include
  • C# 获取System.Color 中所有颜色

    将 System Color 中的全部颜色提取出来 经过简单筛选后打乱顺序 做成随机颜色数组 用于存取取出的颜色对象 List
  • node + alipay-sdk 沙箱环境简单测试电脑网站支付

    正式上线需要上传营业执照 不知道怎么去申请一个 使用沙箱测试 首先前往支付宝开放平台控制台可看到左下方的沙箱测试链接 然后设置接口加签方式 选择系统默认密钥 系统默认密钥 gt 公钥模式 gt 查看 相关密钥分3种 应用公钥 应用私钥 选择
  • nestjs:使用nodemailer发送邮件提示mailer Error: Unexpected socket close

    问题 如上 参考 javascript nodemailer Connection closed unexpectedly Stack Overflow 解决办法 如果端口用的465 需要加上 secure true 之前没加导致上述报错
  • qt中将按钮指向的鼠标变成手型

    具体操作的方式有两种 一种是直接通过界面来进行更改 如下 第二种 就是使用代码的形式 ui gt pushButton gt setCursor QCursor Qt PointingHandCursor
  • unix时间戳c语言源码

    在单片机程序开发中 经常会遇到做数据存储 利用时间信息做数据的搜索查询 时间格式最好还是用unix时间戳的形式 可以直接对时间进行加减运算 从RTC中读取的时间一般都是BCD码 如何转换成unix时间戳 简单的做了实现 并开N台电脑从0开始
  • meidaPlayer java.io.IOException: setDataSource failed.: status=0x800000

    1 权限
  • pfSense多拨网速叠加教程

    0 废话 前后一共折腾了两天 发现网上很少有pfsense的多拨教程 查了好多资料终于摸索出来了方法 记录一下 坐标山东 联通光纤入户 200兆 实测稳定在250兆 赞 但是上行只有40兆 最后弄完 下行到了450M 一超过500就全部掉线
  • 杭电OJ 1003 Max Sum

    Max Sum 页面数据来自 this page from http acm hdu edu cn showproblem php pid 1003 Time Limit 2000 1000 MS Java Others Memory Li