博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3262 Protecting the Flowers 贪心
阅读量:6701 次
发布时间:2019-06-25

本文共 799 字,大约阅读时间需要 2 分钟。

题意:给定n个奶牛,FJ把奶牛i从其位置送回牛棚并回到草坪要花费2*t[i]时间,同时留在草地上的奶牛j每分钟会消耗d[j]个草

        求把所有奶牛送回牛棚内,所消耗草的最小值

 

思路:贪心,假设奶牛a和奶牛b所处位置为,

    交换前 ....(ta, da) (tb, db)....

    交换后 ....(tb, db) (ta, da)....

 

设此前已消耗的时间为x,那么交换前消耗的草:x*da + (x+ta)*db

            交换后消耗的草:x*db + (x+tb)*da

除非交换后的消耗相比交换前的小才交换,即ta*db > tb*da

 

AC代码:

#include 
#include
#include
#include
using namespace std;const int N = 100005;const int INF = 0X3f3f3f3f;int n,t[N],d[N],sum,vis[N];struct node{ int t,d;}w[N];int cmp(node n1, node n2){ return n1.t*n2.d < n1.d * n2.t;}void solve(){ sort(w,w+n,cmp); long long ans = 0; for(int i = 0; i < n; i++) { sum -= w[i].d; ans += sum*w[i].t*2; } cout<
<

  

转载于:https://www.cnblogs.com/sevenun/p/5437416.html

你可能感兴趣的文章
Android开发之漫漫长途 Ⅷ——Android Binder(也许是最容易理解的)
查看>>
CAS无锁实现原理以及ABA问题
查看>>
FIREDAC直连ORACLE数据库
查看>>
六成黑客攻击与PDF漏洞有关 远超微软
查看>>
Gac代码库分析(3)智能指针
查看>>
如何做好技术串讲
查看>>
oracle的sql语句语法
查看>>
实例教程十三:拍照
查看>>
SCRIPT - to Tune the 'SESSION_CACHED_CURSORS' and 'OPEN_CURSORS' Parameters
查看>>
【转】MFC 字体LOGFONT
查看>>
iOS 图片填充 UIImageView
查看>>
spark2.3.0 配置spark sql 操作hive
查看>>
mysql常见错误解决方法
查看>>
【百度地图API】如何制作公交线路的搜索?如331路
查看>>
MusicXML 3.0 (30) - 和弦图表
查看>>
大话 char、varchar、 nchar、nvarchar之间"剪不断理还乱"的关系
查看>>
系统数据库
查看>>
JAVA: java产生随机数的几种方式
查看>>
调试发现的小错误
查看>>
c#中使用NetCDF存储二维数据的读写操作简单应用
查看>>