POJ 3362 Protecting the Flowers

这题和金华区域赛A题(HDU 4442)是一样的做法。

对两个奶牛进行分析,选择两个奶牛总花费少的方式排序。

bool cmp(const X&a,const X&b)
{
  return a.t*b.d<b.t*a.d;
}

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int maxn=100000+10;
struct X
{
    long long t;
    long long d;
} s[maxn];
int n;

bool cmp(const X&a,const X&b)
{
    return a.t*b.d<b.t*a.d;
}

int main()
{
    while(~scanf("%d",&n))
    {
        for(int i=1; i<=n; i++) scanf("%lld%lld",&s[i].t,&s[i].d);
        sort(s+1,s+1+n,cmp);
        long long ans=0;
        long long sum=2*s[1].t;
        for(int i=2; i<=n; i++)
        {
            ans=ans+s[i].d*sum;
            sum=sum+2*s[i].t;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
时间: 2025-01-01 05:39:37

POJ 3362 Protecting the Flowers的相关文章

POJ 3262 Protecting the Flowers(贪心)

Language: Default Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4942   Accepted: 1973 Description Farmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the grass, as usual. When he returned,

POJ 3262 Protecting the Flowers【贪心】

一开始老是错,不知道咋回事,后来发现一开始sum就赋值为零了,再减去肯定是负的,一开始sum都没加数咋算,想漏了,顿时无语了,写了几十天了,今天才解决,哎~~注意输出有可能是超过整型的 http://blog.csdn.net/u014004096/article/details/36876287 Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4604   Accepted:

POJ 3262 Protecting the flowers

http://poj.org/problem?id=3262 这道题和蝎子那道题是相同贪心思路 http://www.cnblogs.com/oscar-cnblogs/p/6329703.html //贪心方式一:列出函数关系式比较复杂//方式二:像蝎子那道题 先讨论两只 奶牛怎样送是最优的/*a1 b1a2 b2先送1 ans = 2*a1*b2先送2 ans = 2*b1*a2那么如果先送1 更优说明 2*a1*b2 < 2*b1*a2 --->> a1 / b1 < a2

POJ 3262 Protecting the Flowers 题解 《挑战程序设计竞赛》

题目:POJ - 3262 这道题,需要好好总结. 原来的思路是,依次计算出送走奶牛1~N会毁掉的花的数量,找出最小的,送走这头牛.然后又在剩下的奶牛中找可以使毁掉的花的数量最小的送走.如此循环直到全被送走. 对是对,只是也太繁琐了些,并且超时. 没有意识到其实这样的思路进行了很多次重复的比较. 后来看了别人的思路,发现可以先排序,一次就可以排好奶牛应该被送走的顺序. 刚开始觉得,这样很像之前做的Yogurt Factory题目,用动态规划记录每相邻两个牛的比较结果. 写完后发现不对,才发现又陷

poj -3262 Protecting the Flowers (贪心)

http://poj.org/problem?id=3262 开始一直是理解错题意了!!导致不停wa. 这题是农夫有n头牛在花园里啃花朵,然后农夫要把它们赶回棚子,每次只能赶一头牛,并且给出赶回每头牛需要的时间和牛在花园每分钟吃多少花朵,问你怎么安排让损失最小. 这题单独按time和eat排序都不行,得按它们的比率来排,如果是选择eat/time  则从大到小排,time/eat则从小到大排,但是不会严格证明. 1 #include <iostream> 2 #include <cstd

poj 3262 Protecting the Flowers 贪心

题意:给定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 除非交换后的消耗相比交换前的小才交换

USACO 保护花朵 Protecting the Flowers, 2007 Jan

Description 约翰留下了 N 只奶牛呆在家里,自顾自地去干活了,这是非常失策的.他还在的时候,奶牛像 往常一样悠闲地在牧场里吃草.可是当他回来的时候,他看到了一幕惨剧:他的奶牛跑进了他的花园, 正在啃食他精心培育的花朵!约翰要立即采取行动,挨个把它们全部关回牛棚. 约翰牵走第 i 头奶牛需要 T i 分钟,因为要算来回时间,所以他实际需要 2 · T i 分钟.第 i 头奶牛 如果还在花园里逍遥,每分钟会啃食 Di 朵鲜花.但只要约翰抓住了它,开始牵走它的那刻开始,就 没法吃花了.请帮

Protecting the Flowers(POJ3262)(贪心)

Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4540   Accepted: 1819 Description Farmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the grass, as usual. When he returned, he found to his ho

1634: [Usaco2007 Jan]Protecting the Flowers 护花

1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 493  Solved: 310[Submit][Status] Description Farmer John went to cut some wood and left N (2 <= N <= 100,000) cows eating the grass, as usual. When he retur