推公式——耍杂技的牛

由图可知,只要存在一个逆序,把他们交换一下,最大风险值就会降低,答案更优,因此最优解是按照wi+si从小到大升序排列,顺次计算每头牛的危险系数,最大值即是答案。

cpp 复制代码
#include <iostream>
#include <algorithm>

using namespace std;

typedef pair<int, int> PII;

const int N = 50010;

int n;
PII cow[N];

int main()
{
    cin>>n;
    for (int i = 0; i < n; i ++ )
    {
        int s, w;
        cin>>w>>s;
        cow[i] = {w + s, w};
        //pair是按照first为第一关键字排序,以second为第二关键字排序
    }

    sort(cow, cow + n);//升序

    int res = -2e9, sum = 0;//res代表风险值,sum当前这头牛上面所有牛的重量
    for (int i = 0; i < n; i ++ )
    {
        int s = cow[i].first - cow[i].second, w = cow[i].second;
        res = max(res, sum - s);
        sum += w;
    }

    cout<<res;

    return 0;
}
相关推荐
炽烈小老头1 分钟前
【 每天学习一点算法 2026/03/14】二叉搜索树中第K小的元素
学习·算法
一条大祥脚2 分钟前
WQS二分(Alien Trick)
算法
xiaoye-duck2 分钟前
《算法题讲解指南:递归,搜索与回溯算法--二叉树中的深搜》--6.计算布尔二叉树的值,7.求根节点到叶节点数字之和
c++·算法·深度优先·递归
greatofdream5 分钟前
VIP和普通用户排队
算法
abant215 分钟前
leetcode 84 单调栈
算法·leetcode·职场和发展
liuyao_xianhui16 分钟前
递归_反转链表_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
CoderCodingNo16 分钟前
【GESP】C++七级考试大纲知识点梳理 (3) 图论基础与遍历算法
c++·算法·图论
深蓝轨迹19 分钟前
LeetCode105. 从前序与中序遍历序列构造二叉树
数据结构·算法
TracyCoder12320 分钟前
LeetCode Hot100(63/100)——31. 下一个排列
数据结构·算法·leetcode
智者知已应修善业32 分钟前
【不用第三变量交换2个数】2024-10-18
c语言·数据结构·c++·经验分享·笔记·算法