似巨龙高歌(贪心)

95 篇文章 0 订阅

似巨龙高歌

题目背景

拜谢 whk 神犇帆巨/bx

尽管帆帆文化课很强,但在新年他不想给同龄蒟蒻带来太大压力,于是他准备对一年的考试成绩做一些手脚……

题目描述

面对着自己向巨龙一样腾飞的成绩,新年到来时帆帆忍不住唱起了《爱你》。

他今年一共有 n n n 次考试,第 i i i 次考试的排名是 a i a_i ai

这在无形之中给别的同学造成了压力,于是他希望把自己的 n n n 次排名进行重排,使得进步最大的一次考试进步的名次最少,这样他就可以隐藏自己的实力。

对于第 i i i 次和第 i + 1 i+1 i+1 次考试( 1 ≤ i < n 1\le i < n 1i<n),他的进步名次即为 a i − a i + 1 a_i-a_{i+1} aiai+1,如果该值为负则代表他退步了。

请你帮帮他。

输入格式

输入两行。

第一行,输入一个整数 n n n

第二行,输入 n n n 个整数,每两个整数之间用空格隔开。第 i i i 个整数表示 a i a_i ai

输出格式

输出一行一个整数,表示答案。

样例 #1

样例输入 #1

2
1 1

样例输出 #1

0

样例 #2

样例输入 #2

4
2 4 1 3

样例输出 #2

-1

提示

【样例 1 解释】

帆帆不改变原本的考试序列,那么从第一次到第二次考试进步了 0 0 0 名(排名没变化)。

【样例 2 解释】

帆帆可以把自己的考试排名重排为 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4,那么他每次考试都进步了 − 1 -1 1,所以答案是 − 1 -1 1

本题采用捆绑测试

【数据范围】

  • 对于 30 % 30\% 30% 的数据,保证 n ≤ 10 n\le 10 n10

  • 对于 50 % 50\% 50% 的数据,保证 n ≤ 5000 n\le 5000 n5000

  • 对于另外 20 % 20\% 20% 的数据,保证 a i ≤ 2 a_i\le 2 ai2

  • 对于 100 % 100\% 100% 的数据,保证 2 ≤ n ≤ 1 0 6 2\le n\le 10^6 2n106 1 ≤ a i ≤ 1 0 9 1\le a_i\le 10^9 1ai109

思路

题目要求:进步最大的一次考试进步的名次最少。

  • 最少:因此我们可以发现,我们只要退步就行了。
  • 最大:在考试进步中取最大的就行了。

总的来说:最大的最小就是最大的要最小。

AC代码

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1e6+10;

int w[N],n;

int main(){
    cin>>n;
    
    for(int i=1;i<=n;i++)cin>>w[i];
    
    //最大的一次考试进步的名次最少
    sort(w+1,w+1+n);//名次最少
    int minv=-2e9;
    for(int i=1;i<n;i++){
        minv=max(minv,w[i]-w[i+1]);//最大的进步
    }
    
    cout<<minv;
    
    return 0;
    
}
  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

green qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值