1276. 护花 (Standard IO)
来源:互联网 发布:淘宝规模 编辑:程序博客网 时间:2024/05/17 04:04
Description
FJ出去砍木材去了,把N(2<=N<=100,000)头牛留在家中吃草,当他回来的时候,发现奶牛们都跑到花园里吃花去了,为了减少损失,FJ打算把牛移到牛棚中去。每头牛的位置离牛棚需要Ti分钟(1<=Ti<=2,000,000),而且在等待被移走的过程中,每分钟破坏Di(1<=Di<=100)朵花,无论多么努力FJ一次只能移动一只奶牛,移动一只奶牛到牛棚需要2×Ti分钟(来回各一次)。写一个程序安排移动顺序使得损失的花最少。
Input
第1行输入一个整数N第2到N+1行每行包含两个整数Ti和Di
Output
输出一个整数表示最少损失的花的数量
Sample Input
63 12 52 33 24 11 6
Sample Output
86
思路
O(nlogn)用s保存每头奶牛的性价比,在对s进行快排。
var n:longint; t,d:array[1..100000] of longint; s:array[1..100000] of real;procedure px(x,y:longint);var l,h,k:longint; mid,f:real;begin l:=x;h:=y; mid:=s[(l+h) div 2]; repeat while mid>s[l] do inc(l); while mid<s[h] do dec(h); if l<=h then begin k:=t[l];t[l]:=t[h];t[h]:=k; k:=d[l];d[l]:=d[h];d[h]:=k; f:=s[l];s[l]:=s[h];s[h]:=f; inc(l);dec(h); end; until l>h; if x<h then px(x,h); if y>l then px(l,y);end;var i,j,l,x:longint; ans:int64;begin readln(n); for i:=1 to n do begin readln(t[i],d[i]); s[i]:=t[i]/d[i]; l:=l+d[i]; end; px(1,n); for i:=1 to n do begin l:=l-d[i]; ans:=ans+l*2*t[i]; end; writeln(ans);end.
阅读全文
1 2
- 1276. 护花 (Standard IO)
- Window (Standard IO)
- Party (Standard IO)
- 1326. Window (Standard IO)
- 遥控车 (Standard IO)
- Mobile Service (Standard IO)
- 舞台设置 (Standard IO)
- 拉力赛 (Standard IO)
- 车展 (Standard IO)
- 1328. Party (Standard IO)
- 三条线 (Standard IO)
- 绕圈跑 (Standard IO)
- 餐桌 (Standard IO)
- 直角三角形 (Standard IO)
- 佳肴 (Standard IO)
- 删除 (Standard IO)
- 区间 (Standard IO)
- 佳肴 (Standard IO)
- Spring Boot大纲
- 欢迎使用CSDN-markdown编辑器
- 一道值得分享(interesting)的题目
- 【啊哈!算法】算法11:堆——神奇的优先队列(上)
- linux下Mysql安装
- 1276. 护花 (Standard IO)
- 优先队列的重载方式。
- 6. ZigZag Conversion
- Xml解析
- Linux 高可用(HA)集群之keepalived详解
- 复制粘贴的实现
- 进入Docker容器的方法
- Beaglebone Black上使用Codesys开发EtherCAT(一)
- 感知损失(Perceptual Losses)