题目描述

约翰留下他的N只奶牛上山采木。他离开的时候,她们像往常一样悠闲地在草场里吃草。
可是,当他回来的时候,他看到了一幕惨剧:牛们正躲在他的花园里,啃食着他心爱的美丽花朵!为了使接下来花朵的损失最小,约翰赶紧采取行动,把牛们送回牛棚。  
牛们从1到N(2≤N≤100000)编号.第i只牛所在的位置距离牛棚Ti(1≤Ti≤2000000)分钟的路程,而在约翰开始送她回牛棚之前,她每分钟会啃食Di(1≤Di≤100)朵鲜花。
无论多么努力,约翰一次只能送一只牛回棚。而运送第第i只牛事实上需要2Ti分钟,因为来回都需要时间。    
写一个程序来决定约翰运送奶牛的顺序,使最终被吞食的花朵数量最小。

输入

第1行输入N; 
之后N行每行输入两个整数Ti和Di。 

输出

输出一个整数,表示最小数量的花朵被吞食。

样例输入 Copy

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

样例输出 Copy

86
强烈要求改变题面意思!奶牛在Fj过去的路程中就被吓傻了!她们不会在这时吃花!
第一反应最优解,先dp吧,但是发现貌似没有这么麻烦。。。样例贪心就可以过。但是我没有看明白题目,于是就乱搞了一通,把样例水过去就不水了,于是0分。
分析:
继续贪心算法。Fj要吃的花的数量最少,进行假设:牛1牛2,她们的d和t分别用dx,tx,dy,ty来表示。
假设先搬牛1比先搬牛2得出的解更优。
于是:
xd*xt+(xt+yt)*yd<=yd*yt+(yt+xt)*xd;
xd*xt+xt*yd+yt*yd<=yd*yt+yt*xd+xt*xd;
化简得
xt*yd<=yt*xd
(眼花缭乱)
反正就是cmp按照这个东西排序,就能得到最优的顺序
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
int n;//2 100000
struct node
{
long long int t,d;
}a[maxn];
long long int t;
long long int ans;
bool cmp(node x,node y)
{
return x.d*y.t>=y.d*x.t;
}
inline long long read()
{
long long x=,f=;char s=getchar();
while(s>''||s<''){if(s=='-')f=-;s=getchar();}
while(s<=''&&s>=''){x=x*+s-'';s=getchar();}
return x*f;
}
int main()
{
n=read();//scanf("%d",&n);
for(int i=;i<=n;i++)
{
a[i].t=read();
a[i].d=read();//scanf("%d%d",&a[i].t,&a[i].d);
}
sort(a+,a+n+,cmp);
for(int i=;i<=n;i++)
{
ans+=t*a[i].d;
t+=a[i].t*;
}
printf("%lld",ans);
return ;
}

(完)

  

 

20190630A(贪心)的更多相关文章

  1. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  2. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  3. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  5. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  6. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  7. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

  8. 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心

    SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...

  9. 【贪心】HDU 1257

    HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...

随机推荐

  1. LitePal的查询

    转载:http://blog.csdn.net/guolin_blog/article/details/40153833 传统的查询数据方式 其实最传统的查询数据的方式当然是使用SQL语句了,Andr ...

  2. wsgi相关的

    目录 web 本质 http协议 请求方式 响应状态码 请求与响应文本格式 目录 web 本质   本质就是浏览器和服务器进行通信, http协议   也叫超文本传输协议(英文:HyperText T ...

  3. Spring Security 学习记录

    一.核心拦截器详细说明 1.WebAsyncManagerIntegrationFilter 根据请求封装获取WebAsyncManager 从WebAsyncManager获取/注册Security ...

  4. vue-cli脚手架项目本地阅览和在线阅览

    一.需求 开发环境:当然啦,前提是你要完整检测整个项目无错误的运行:npm run dev 后项目在本地预览问题没有问题 二.服务器本地阅览 生产环境:项目制作完成后需执行npm run build操 ...

  5. deferred对象和promise对象(一)

    个人认为阮一峰老师讲的关于deferred对象是最容易理解的. deferred对象是jquery的回调函数解决方案.解决了如何处理耗时操作的问题,对那些操作提供了更好的控制,以及统一的编程接口. d ...

  6. 解读C#中的正则表达式

    本文摘自LTP.NET知识库. regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件: System.Text. ...

  7. StringBuffer的一些小整理

    大家好,欢迎大家在百忙当中来到我的博客文,也许是因为各种需要到此一游,哈哈.不过来到这里不会让您失望的,此段博文是这段时间不忙的时候整理出来的,对于刚学java基础的同学非常适合.下面言归正传: 首先 ...

  8. yum安装出现No package vim available解决办法

    [root@iZwz96wgquf8g6okusxr0uZ yum.repos.d]# yum install yum-downloadLoaded plugins: fastestmirrorLoa ...

  9. [BZOJ1054] 移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2741  Solved: 1537[Submit][Stat ...

  10. 初识AutoIt

    1.定义 AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组 ...