当前位置:网站首页>125. 耍杂技的牛
125. 耍杂技的牛
2022-08-10 03:41:00 【Hunter_Kevin】
题目
农民约翰的 N 头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。
奶牛们不是非常有创意,只提出了一个杂技表演:
叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。
奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。
这 N 头奶牛中的每一头都有着自己的重量 Wi 以及自己的强壮程度 Si。
一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。
您的任务是确定奶牛的排序,使得所有奶牛的风险值中的最大值尽可能的小。
输入格式
第一行输入整数 N,表示奶牛数量。
接下来 N 行,每行输入两个整数,表示牛的重量和强壮程度,第 i 行表示第 i 头牛的重量 Wi 以及它的强壮程度 Si。
输出格式
输出一个整数,表示最大风险值的最小可能值。
数据范围
1≤N≤50000,
1≤Wi≤10,000,
1≤Si≤1,000,000,000
输入样例:
3
10 3
2 5
3 3
输出样例:
2
代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 50010;
struct Node{
int w, s;
bool operator< (const Node & t)const{
return w+s < t.w+t.s;
}
}a[N];
int sum[N];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++) scanf("%d%d",&a[i].w, &a[i].s);
sort(a+1, a+1+n);//根据重量和强度的和排序
// 求重量的前缀和
for(int i = 1; i <= n; i++) sum[i] = sum[i-1] + a[i].w;
// 遍历找出 sum[i-1] - a[i].s的最大值,即风险的最大值
int res = -1e9;
for(int i = 1; i <= n; i++) res = max(res, sum[i-1]-a[i].s);
cout << res << endl;
return 0;
}
边栏推荐
猜你喜欢
zabbix添加监控主机和自定义监控项
goland console shows overlapping problem solution
测试工作管理与规范
Evaluation and Construction of Enterprise Network Security Capability from the Sliding Ruler Model
【网络迁移】Pytorch中的F.interpolate对应MindSpore哪个方法
mindspore gpu版本安装问题
Do you know these basic types of software testing?
电话自动拨号在电脑上自动拨打
【MindSpore功能】运行SSD-MobileNetV1 FPN样例报错
互联网公司高频面试题精讲:测试计划和测试方案有什么区别?
随机推荐
Dijkstra求最短路
TCP协议之《延迟ACK策略》
如何开启热部署Devtools
测试工作管理与规范
ARP Spoofing - Tutorial Details
Redis 定长队列的探索和实践
How does a new tester do functional testing?Test thinking is really important
UDP协议之《套接口阻塞选项UDP_CORK》
GBase 8s迁移失败
RoyalScope分析仪:发现CAN总线波形台阶和信号幅值低的问题
模型部署ONNX学习
matlab simulink response spectrum calculation
golang中的URL 的编码和解码(转)
整理零碎东西
Jackson的ObjectMapper在项目中的主要运用
【网络迁移】Pytorch中的torch.is_tensor对应MindSpore哪个接口
【单调栈】【概念讲解&&模板代码】
Pen paper records
Basic understanding of network models
Mini Program Navigation and Navigation Parameters