jzoj 1276. 护花

阅读: 评论:0

jzoj 1276. 护花

jzoj 1276. 护花

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

6
3 1
2 5
2 3
3 2
4 1
1 6

Sample Output

86

Data Constraint

Hint

【样例说明】
FJ按照6、2、3、4、1、5的顺序移走奶牛

分析:
对于两头牛i和j,则先把i带走的代价是Ti*Dj,而把j先带走代价是Tj ∗ <script type="math/tex" id="MathJax-Element-36">*</script>Di,判断这两个数的大小,用此来进行快排就好了。

代码:

vara,b:array [1..100000] of longint;n,i:longint;ans,time:int64;procedure qsort(l,r:longint);var mid,i,j,key_a,key_b,t:longint;
beginif l>r then exit;i:=l; j:=r;mid:=(l+r) shr 1;key_a:=a[mid];key_b:=b[mid];repeatwhile a[i]*key_b<b[i]*key_a do inc(i);while a[j]*key_b>b[j]*key_a do dec(j);if i<=j thenbegint:=a[i]; a[i]:=a[j]; a[j]:=t;t:=b[i]; b[i]:=b[j]; b[j]:=t;inc(i); dec(j);end;until i>j;qsort(l,j);qsort(i,r);
end;beginreadln(n);for i:=1 to n dobeginread(a[i],b[i]);end;qsort(1,n);time:=0; ans:=0;for i:=1 to n dobeginans:=ans+time*b[i];time:=time+a[i]*2;end;writeln(ans);
end.

本文发布于:2024-01-28 22:37:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645266210790.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:[JZOJ 5697] 农场
标签:护花   jzoj
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23