首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >jzoj 1146. 危险系数(acrobat)

jzoj 1146. 危险系数(acrobat)

作者头像
全栈程序员站长
发布2022-06-30 19:49:13
发布2022-06-30 19:49:13
4100
举报

大家好,又见面了,我是你们的朋友全栈君。

1146. 危险系数(acrobat) (File IO): input:acrobat.in output:acrobat.out

时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet

题目描述

N(1 <= N <= 50,000,标记为1..N)个人计划玩一个叠罗汉杂技,除了最底下的那个人以外每个人都站在另一个人的头顶上。每个人都有自己的体重W_i(1<=W_i<=10,000)和力量S_i(1<=S_i<=1,000,000,000),每个人的危险系数定义为他所承受的重量(注意:不包括他自己)减去他的力量所得到的差,你的任务是找出使得N个人中最大的危险系数最小的顺序。

输入

第一行:输入一个整数N; 第2到第N+1行:其中第i+1行描述第i个人的体重和力量,中间用空格隔开。

输出

输出一个整数表示最优顺序中最大的危险系数。

样例输入
代码语言:javascript
复制
3
10 3
2 5
3 3
样例输出
代码语言:javascript
复制
2

数据范围限制

贪心,为了达到最优,应该使越下面的人的力量和体重尽可能大,所以以体重和力量的和为关键字排序,

然后直接求解就好了。

代码如下:

代码语言:javascript
复制
var a,b,c:array[1..50000]of longint; n,max:longint;procedure init;var i:longint;begin readln(n); for i:=1 to n do  begin   readln(a[i],b[i]);   c[i]:=a[i]+b[i];  end;end;procedure qsort(l,r:longint);var i,j,k,m:longint;begin if l>=r then exit; i:=l; j:=r; k:=c[(i+j) div 2]; repeat  while c[i]<k do inc(i);  while c[j]>k do dec(j);  if i<=j then   begin    m:=c[i]; c[i]:=c[j]; c[j]:=m;    m:=a[i]; a[i]:=a[j]; a[j]:=m;    m:=b[i]; b[i]:=b[j]; b[j]:=m;    inc(i); dec(j);   end;  until i>j; qsort(l,j); qsort(i,r);end;procedure main;var i,k,j:longint;begin k:=0; max:=-maxlongint; for i:=1 to n do  begin    if k-b[i]>max then max:=k-b[i];    k:=k+a[i];  end; write(max);end;begin assign(input,'acrobat.in');reset(input); assign(output,'acrobat.out');rewrite(output); init; qsort(1,n); main; close(input); close(output);end.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132054.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1146. 危险系数(acrobat) (File IO): input:acrobat.in output:acrobat.out
    • 题目描述
    • 输入
    • 输出
    • 样例输入
    • 样例输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档