题目描述
有n头奶牛跑到FJ的花园里去吃花儿了,它们分别在距离牛圈T分钟处吃花儿,每分钟会吃掉D朵卡哇伊的花儿,(此处有点拗口,不要在意细节啊!),FJ现在要将它们给弄回牛圈,但是他每次只能弄一头回去,来回用时总共为2*T分钟,在这段时间内,其它的奶牛会继续吃FJ卡哇伊的花儿,速度保持不变,当然正在被赶回牛圈的奶牛就没口福了!现在要求以一种最棒的方法来尽可能的减少花儿的损失数量,求奶牛吃掉花儿的最少朵数!
(2 ≤ N ≤ 100,000) (1 ≤ Ti ≤ 2,000,000) (1 ≤ Di ≤ 100)
输入
第1行:单个整数N.
第2…N + 1行:每行包含两个空格分隔的整数,Ti和Di,描述单个牛的特征
输出
第1行:一个整数,它是被毁花的最小数量
样例输入
6
3 1
2 5
2 3
3 2
4 1
1 6
样例输出
86
#include<bits/stdc++.h>
#define N 1000100
using namespace std;
struct node
{long long d;long long t;double s; //s=t/d
}a[N]; //可证明,先带走t/d较小的 int n;
int cmp(node x,node y)
{if(x.s<y.s) return 1;return 0;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld%lld",&a[i].t,&a[i].d);a[i].s=(double)a[i].t/a[i].d;} sort(a+1,a+n+1,cmp);long long ans=0,t=a[1].t*2;for(int i=2;i<=n;i++){ans+=t*a[i].d;t+=2*a[i].t; }cout<<ans<<endl;return 0;
}
本文发布于:2024-01-28 22:38:27,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645271210796.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |