码迷,mamicode.com
首页 > 其他好文 > 详细

迭奶牛

时间:2020-05-23 15:00:23      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:垂直   wing   身体   rev   最小   max   ram   sort   std   

农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。

奶牛们不是非常有创意,只提出了一个杂技表演:

叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。

奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。

这N头奶牛中的每一头都有着自己的重量WiWi以及自己的强壮程度SiSi。

一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。

您的任务是确定奶牛的排序,使得所有奶牛的风险值中的最大值尽可能的小。

输入格式

第一行输入整数N,表示奶牛数量。

接下来N行,每行输入两个整数,表示牛的重量和强壮程度,第i行表示第i头牛的重量WiWi以及它的强壮程度SiSi。

输出格式

输出一个整数,表示最大风险值的最小可能值。

数据范围

1N500001≤N≤50000,
1Wi10,0001≤Wi≤10,000,
1Si1,000,000,0001≤Si≤1,000,000,000

输入样例:

3
10 3
2 5
3 3

输出样例:

2

题解

https://www.acwing.com/solution/acwing/content/845/

 

#include<bits/stdc++.h>
using namespace std;
int N;
typedef pair<int,int> PII;
PII a[50005];
int main()
{
    cin>>N;
    long long x,y;
    long long ans;
    long long sum=0;
    for(int i=0;i<N;i++)
    {
        cin>>a[i].first>>a[i].second;
        a[i].first+=a[i].second;
    }
    sort(a,a+N);
    ans=-1e9;
    for(int i=0;i<N;i++)
    {
        ans=max(ans,sum-a[i].second);
        sum+=a[i].first-a[i].second;
    }
    cout<<ans<<endl;
    

}

 



迭奶牛

标签:垂直   wing   身体   rev   最小   max   ram   sort   std   

原文地址:https://www.cnblogs.com/Charls/p/12942307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!