当前位置: 首页 > article >正文

洛谷 P5146 最大差值 C语言

P5146 最大差值 - 洛谷 | 计算机科学教育新生态

题目描述

HKE 最近热衷于研究序列,有一次他发现了一个有趣的问题:
对于一个序列 A1​,A2​,…,An​,找出两个数 i,j(1≤i<j≤n),使得 Aj​−Ai​ 最大。
现在给出这个序列,请找出 Aj​−Ai​ 的最大值。

输入格式

第一行为一个正整数 n。
接下来 n 行,每行一个整数,第 (i+1) 行的整数为 Ai​。

输出格式

一行,为 Aj​−Ai​ 的最大值。

输入输出样例

输入 #1

10
1
3
4
6
7
9
10
1
2
9

输出 #1

9

说明/提示

数据规模与约定

  • 对于 30% 的数据,n≤1000;
  • 对于 70% 的数据,n≤1e5;
  • 对于 100% 的数据:2≤n≤1e6,Ai​ 在 int 范围内。

思路如下:
 

一开始肯定有很多审题不认真的小伙伴,用排序或者变量跟踪最大值和最小值求解答,发现才58分。

这是因为,这题是先确定i,j。i<=j 再确定a[j]-a[i]。假设是10 2 3.下标是1 2 3 。本来i < j -> 1 < 3.sort之后10排在2后面去了。所以不满足条件。这题不能排序

那么解题思路如下:

暴力思路就是O(n*n):

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const ll N = 1e6+10;
ll n;
ll arr[N];
int main() 
{
	ll ans = -1e10;
	cin >> n;
	for(ll i = 1 ; i <= n ; i++)
	cin >> arr[i];
	for(ll i = 1 ; i <= n ; i++)
	{
		for(ll j = 1 ; j <= n ; j++)
		{
			if(arr[j] - arr[i] > ans && j > i)
			ans = arr[j] - arr[i];
		}
	}
	cout << ans;
	return 0;
}


优化:

用递推思路,使用ans变量跟踪区间最大值,因为j > i ,所以再用一个变量跟踪最小值。其实就是滑动串口。也是贪心。当输入一个最小值比当前最小值还要小的时候,窗口就从这个最小值开始了,因为j > i.

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
ll n;
ll ans = -1e10;
int main() 
{
	cin >> n;
	ll curmin;
	cin >> curmin;
	for(ll i = 2 ; i <= n ; i++)
	{
		ll t;
		cin >> t;
		if(t - curmin > ans)
		ans = t - curmin;
		if(t < curmin)
		curmin = t;
	}
	cout << ans;
	return 0;
}


http://www.kler.cn/a/530599.html

相关文章:

  • 深入理解 `box-sizing: border-box;`:CSS 布局的利器
  • SpringMVC全局异常处理+拦截器使用+参数校验
  • 吴恩达深度学习——超参数调试
  • 书生大模型实战营3
  • 14-9-1C++STL的set容器
  • nginx目录结构和配置文件
  • 力扣第435场周赛讲解
  • .事件传参与数据同步,条件渲染,列表渲染
  • javaweb实训:购物商城系统项目
  • MQTT知识
  • (万字长文)C++17中的未初始化内存算法:深度解析与实战应用
  • Baklib在内容中台智能化推荐系统中的应用与未来发展路径分析
  • 学习串行通信
  • 记8(高级API实现手写数字识别
  • GPIO配置通用输出,推挽输出,开漏输出的作用,以及输出上下拉起到的作用
  • Shell篇-字符串处理
  • Windows编译FreeRDP步骤
  • 视觉状态空间模型(VMamba)的解读
  • RouterChain
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取
  • 【Block总结】完全注意力Fully Attentional,同时捕捉空间和通道的注意力|即插即用
  • 我问了DeepSeek和ChatGPT关于vue中包含几种watch的问题,它们是这么回答的……
  • MiniQMT与QMT:量化交易软件的对比分析
  • C语言------二维数组指针从入门到精通
  • 一文了解阿里的 Qwen2.5 模型
  • 79-《袋鼠花》