首页 > 其他 > 详细

考试T1护花

时间:2019-07-02 19:36:25      阅读:88      评论:0      收藏:0      [点我收藏+]

传送门

这题的提议似乎有什么问题,只要约翰选好了要抓那头牛,他就不会吃草了,站在原地傻等?

这题就是贪心,但在用cmp中比较单位时间吃草数量时,要用double型,不然可能会有点一样。。。

还有就是主要的思路


设x,y是两头牛,如果后送y牛损失的花少于后送x牛损失的花

即x.t*x.d+(x.t+y.t)*y.d<=y.t*y.d+(x.t+y.t)*x.d

打开可化简为x.t*y.d<=y.t*x.d

∴x.d/x.t>=y.d/y.t时选择先送x牛

所以按每头牛吃的花和时间的比从大到小排序的顺序处理就好啦

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define Maxn 100001
 4 struct hhh{int d,t;}cow[Maxn];
 5 bool cmp(hhh x,hhh y){return (float)x.d/(float)x.t>=(float)y.d/(float)y.t;}
 6   
 7 long long ans,T;
 8 int n;
 9 int main()
10 {
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++)    scanf("%d %d",&cow[i].t,&cow[i].d);
13     std::sort(cow+1,cow+1+n,cmp);
14     for(int i=1;i<=n;i++)
15     {
16         ans+=T*cow[i].d;
17         T+=cow[i].t*2;
18     }
19     printf("%lld",ans);
20     return 0;
21 }

 据说不用std标准库,而在使用时用std::不仅高端大气上档次,还会快一点。。。

考试T1护花

原文:https://www.cnblogs.com/2529102757ab/p/11122645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!