码迷,mamicode.com
首页 > 其他好文 > 详细

cogs 1435. [USACO NOV]金发姑娘和N头牛

时间:2018-10-20 20:20:20      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:temp   href   ace   name   最小   mes   hid   tar   one   

1435. [USACO NOV]金发姑娘和N头牛

★★☆   输入文件:milktemp.in   输出文件:milktemp.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

你可能已经听说了金发姑娘和3只熊的经典故事。

鲜为人知的是,金发姑娘最终经营了一个农场。在她的农场,她有一个谷仓含N头奶牛(1<=N <= 20000)。不幸的是,她的奶牛对温度相当敏感。

第i头奶牛必须在指定的温度范围内A(i)..B(i)才感觉舒适;(0<=A(i)<=B(i)<= 1,000,000,000)。如果金发姑娘在谷仓放置一个温控器;如果温度T<A(i),牛会太冷,并将产生x单位牛奶。如果她把恒温器调到(A(i)<=T<=B(i))这个范围内,那么牛会感到舒适,并将产生Y单位牛奶。如果她把恒温器调到温度T>B(i),牛会感觉很热,并将产生的Z单位牛奶。正如预期的那样,Y的值总是大于X和Z。

给定的X,Y,和Z,以及每个牛的温度的最佳范围,如果金发姑娘设置谷仓的温控器最佳,请计算金发姑娘得到牛奶的最大数量,已知X,Y和Z都是整数,范围0..1000。温控器可以设置为任意整数的值。

【输入格式】

第1行:四个用空格隔开的整数:N X Y Z。

第2行..1 + N:行1+i包含两个用空格隔开的整数:A(i)和B(i)。

【输出格式】

1行:金发姑娘最多可以获得的牛奶,当她在谷仓的最佳温度设定。

【样例输入】

4 7 9 6 5 8 3 4 13 20 7 10

【样例输出】

31

【提示】

在农场里有4头奶牛,温度范围5..8,3..4,13..20,10..7。一个寒冷的奶牛生产7单位的牛奶,一个舒适的奶牛生产9个单位的牛奶,一个热牛生产6单位牛奶。

【数据规模】

50%的测试数据:n<=5

其余50%的测试数据:10000<n<=20000.

【来源】

USACO 2013 November Contest, Bronze

translate by cqw

data from cstdio

技术分享图片
/*最优温度一定在边界处取得,然后枚举就可以了*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,x,y,z,ans;
int num1[20010],num2[20010];
int main(){
    freopen("milktemp.in","r",stdin);
    freopen("milktemp.out","w",stdout);
    scanf("%d%d%d%d",&n,&x,&y,&z);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&num2[i],&num1[i]);    
    sort(num1+1,num1+1+n);
    sort(num2+1,num2+1+n);
    for(int i=1;i<=n;i++){
        int tmp1=upper_bound(num2+1,num2+1+n,num1[i])-num2;//最小值大于 受冷 
        int tmp2=lower_bound(num1+1,num1+1+n,num1[i])-num1-1;//最大值小于 受热 
        if(tmp2>n)    tmp2=0;
        if(tmp1>n)    ans=max(ans,tmp2*z+(n-tmp2)*y);
        else ans=max(ans,tmp2*z+(n-tmp1+1)*x+(tmp1-tmp2-1)*y);
        tmp1=upper_bound(num2+1,num2+1+n,num2[i])-num2;//最小值大于 受冷 
        tmp2=lower_bound(num1+1,num1+1+n,num2[i])-num1-1;//最大值小于 受热 
        if(tmp2>n)    tmp2=0;
        if(tmp1>n)    ans=max(ans,tmp2*z+(n-tmp2)*y);
        else ans=max(ans,tmp2*z+(n-tmp1+1)*x+(tmp1-tmp2-1)*y);
    }
    cout<<ans;
}
/*
4 787 993 302
24514 27256
28276 28702
13708 19182
19192 30394
*/
View Code

 

cogs 1435. [USACO NOV]金发姑娘和N头牛

标签:temp   href   ace   name   最小   mes   hid   tar   one   

原文地址:https://www.cnblogs.com/cangT-Tlan/p/9822762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!