迭奶牛

Posted charls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭奶牛相关的知识,希望对你有一定的参考价值。

农民约翰的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;
    

}

 



以上是关于迭奶牛的主要内容,如果未能解决你的问题,请参考以下文章

熊猫迭代行然后中断直到条件

如何迭代行对齐像素的子集

如何在 Pandas 中将 DataFrame 的行迭代为 Series?

将 HashMap 的创建迭代为另一个 HashMap 中的值

sql查询迭代行并进行计算

AcWing 1855. 愤怒的奶牛(枚举+暴力)