点击打开题目

题目大意

奶牛要吃花,FJ来赶牛,将第i头牛赶走要2*ti分钟,奶牛每分钟吃di个单位花,求花的最小损失

先赶吃花多的,Wrong Answer QAQ

我们可以算一算损失

设sum=d1+d2+d3+…+dn

那损失为:

cost1=sum⋅2∑ni=1ti−(sum−d1)⋅2∑ni=2ti−(sum−d1−d2)⋅2∑ni=3ti...

如果将1号牛与2号牛交换

那损失为:

cost2=sum⋅2∑ni=1ti−(sum−d2)⋅2(t1+∑ni=3ti)−(sum−d1−d2)⋅2(∑ni=3ti)...

有变化的量为:t1·d2 –> t2·d1

假设cost1 > cost2

即 t1·d2 > t2·d1

所以t1d1>t2d2

所以在排序时,t1d1小的优先赶走

代码如下:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
struct node{
int t,d;
}a[100001];
bool cmp(node x,node y){return x.t*1.0/x.d<y.t*1.0/y.d;}
int getint()
{
int num=0,flag=1;char c;
while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;
while(c>='0'&&c<='9')num=num*10+c-48,c=getchar();
return num*flag;
}
int n;
long long ans,t;
int main()
{
int i;n=getint();
for(i=1;i<=n;i++)a[i].t=getint(),a[i].d=getint();
sort(a+1,a+n+1,cmp);
for(i=1;i<=n;i++)
{
ans+=a[i].d*t;
t+=2*a[i].t;
}
printf("%lld",ans);
}

最新文章

  1. 不小心删除了sysWOW64下的webio.dll
  2. JS原型链理解
  3. 固态硬盘寿命实测让你直观SSD寿命!--转
  4. CSS3 Media Queries在iPhone4和iPad上的运用
  5. js作用域链与this
  6. PHP session回收机制
  7. C#中virtual和abstract的区别
  8. ArrayList集合的语句示例
  9. 改动mac环境变量,并配置gradle
  10. Asp MVC 中处理JSON 日期类型
  11. css颜色代码对照
  12. MySQL命令行SQL脚本的导入导出小结(数据库的备份与还原)
  13. ms17_010_psexec
  14. requests支持socks5代理了
  15. python if not
  16. 「Vue」父子组件之间的传值及调用方法
  17. 通过Canvas及File API缩放并上传图片完整演示样例
  18. jumpserver的安装
  19. 反编译 轻松调频 Android APP 下载“飞鱼秀”录音
  20. netty 并发访问测试配置

热门文章

  1. html 中文占位符
  2. E420笔记本升级固态硬盘
  3. windows 8.0 mysql 修改root 密码
  4. 洛谷$P5446\ [THUPC2018]$绿绿和串串 $manacher$
  5. python中的enumerate、map、filter和zip函数
  6. HDU3886 Final Kichiku “Lanlanshu” 题解 数位DP
  7. 阿里云函数计算 .NET Core 初体验
  8. C++中重载、重写(覆盖)和隐藏的区别
  9. Session是怎么实现的?存储在哪里?
  10. 输入n个学生,并且输入成绩,判断是否偏科