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

/*
这道题利用差分的思想,
无非只有三个区间:
1: [1, A(i)-1] 在c[0]的位置加上x;
2: [ A(i), B(i)] 在c[A(i)] 的位置上加上y-x;
3: [B(i)+1, n ] 在B(i)+1的位置上加上z-y;
这样,查询某个温度的前缀和,就是奶牛在这个温度产生的牛奶量; 但是, A(i)与B(i)的范围太大, N 又那么小, 所以我们不难想到用离散化;
观察以上区间,其实只有三个点有用,0, A(i), B(i)+1, ;这三个点完全可以代替这三个区间;
所以我们只需保留A(i),B(i)的相对位置就行, 就是不用知道具体多大, 比他大的还在他后面,比他小的还在他前面;
这就是所谓的离散化;(本蒟蒻的见解)
因为每个A(i),B(i)+1, 要加的值是一样的,所以A(i), B(i)的顺序打乱后并不影响结果,这样就可以把他们排序,以便离散;
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 50010
int a[maxn],b[maxn],c[maxn];
struct node{
int l,r;
}A[maxn];
int h[maxn],B[maxn],tot,to;
int bs(int x){
int l=,r=tot,res=;
while(l<=r){
int mid=(l+r)>>;
if(h[mid]>=x)res=mid,r=mid-;
else l=mid+;
}
return res;
}
int main(){
freopen("milktemp.in","r",stdin);freopen("milktemp.out","w",stdout);
int n,x,y,z;
scanf("%d%d%d%d",&n,&x,&y,&z);
for(int i=;i<=n;i++){
scanf("%d%d",&A[i].l,&A[i].r);
B[++to]=A[i].l;
B[++to]=A[i].r;
}
sort(B+,B+to+);
h[++tot]=B[];
for(int i=;i<=to;i++)
if(B[i]!=B[i-])h[++tot]=B[i];
for(int i=;i<=n;i++){
int u=bs(A[i].l);
a[u]--;b[u]++;
u=bs(A[i].r);
b[u+]--;c[u+]++;
}
int xnum=n,ynum=,znum=;
int ans=;
for(int i=;i<=tot;i++){
xnum+=a[i];
ynum+=b[i];
znum+=c[i];
ans=max(ans,xnum*x+ynum*y+znum*z);
}
printf("%d",ans);
return ;
}

Cogs 1435. [USACO NOV]金发姑娘和N头牛的更多相关文章

  1. COGS 1453. [USACO NOV]空牛栏

    ★★   输入文件:empty.in   输出文件:empty.out   简单对比时间限制:1 s   内存限制:64 MB [题目描述] FJ建的新牛棚里有N(2<=N<=3,000, ...

  2. Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd

    题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★   输入文件:butter.in   输出文件 ...

  3. COGS 163 [USACO Mat07] 牛语

    COGS 163 [USACO Mat07] 牛语 输入文件:latin.in   输出文件:latin.out   简单对比 时间限制:1 s   内存限制:128 MB 奶牛们听说猪发明了一种秘密 ...

  4. cogs 181. [USACO Jan07] 最高的牛

    181. [USACO Jan07] 最高的牛 ★★   输入文件:tallest.in   输出文件:tallest.out   简单对比时间限制:1 s   内存限制:32 MB FJ's N ( ...

  5. cogs 182. [USACO Jan07] 均衡队形 线段树

    182. [USACO Jan07] 均衡队形 ★★☆   输入文件:lineup.in   输出文件:lineup.out   简单对比时间限制:4 s   内存限制:128 MB 题目描述 农夫约 ...

  6. COGS 144. [USACO Dec07] 魅力手镯【01背包复习】

    144. [USACO Dec07] 魅力手镯 ★   输入文件:charm.in   输出文件:charm.out   简单对比 时间限制:1 s   内存限制:8 MB 译 by CmYkRgB1 ...

  7. COGS——T1588. [USACO FEB04]距离咨询

    http://cogs.pro/cogs/problem/problem.php?pid=1588 ★★   输入文件:dquery.in   输出文件:dquery.out   简单对比时间限制:1 ...

  8. 匈牙利算法 cogs 886. [USACO 4.2] 完美的牛栏

    886. [USACO 4.2] 完美的牛栏 ★★☆   输入文件:stall4.in   输出文件:stall4.out   简单对比时间限制:1 s   内存限制:128 MB USACO/sta ...

  9. 算法优化(动态规划):COGS 2009. [USACO Mar09]餐厅清扫

    2009. [USACO Mar09]餐厅清扫 ★★☆   输入文件:cleanup.in   输出文件:cleanup.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] ...

随机推荐

  1. 分享知识-快乐自己:HBase编程

    HBase编程: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBa ...

  2. Quality

  3. C#子线程执行完后通知主线程

    其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就 ...

  4. php mysqli_get_server_version()函数

    php mysqli_get_server_version()函数以整数形式返回MySQL服务器版本. 本文章想大家介绍mysqli_get_server_version 函数的基本使用方法和实例,需 ...

  5. L99

    You're not obligated to win. You're obligated to keep trying.你不一定要获胜,但你必须不断尝试.He announced an expans ...

  6. docker 基本概念

    image 操作系统 应用 registeries image 的远程仓库 containers 类似一个目录,一个容器包含了 应用运行所需要的一切东西, 容器之间互相独立 image包换一系列的层, ...

  7. Java中日期和时间的相关问题

    1.java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位 ...

  8. [原]NYOJ-公约数和公倍数 -40

    大学生程序代写 //http://acm.nyist.net/JudgeOnline/problem.php?pid=40 公约数和公倍数 时间限制:1000 ms  |  内存限制:65535 KB ...

  9. 解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题

    解决苹果手机 Safari浏览器下   字体显示为蓝色的 问题 近期测试同学测试,wap站上,底部文字在苹果8上面 ,使用 Safari浏览器打开,一直显示 蓝色字体 其他正常,寻找半天无解,最后 阳 ...

  10. JavaScript RegExp 正则表达式基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...