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. linux下安装rpm格式的mysql

    1.下载安装包官网下载.rpm格式安装包,需要下面两个文件: MySQL-server-5.0.26-0.i386.rpm MySQL-client-5.0.26-0.i386.rpm 注:官网下载时 ...

  2. Selenium-使用firepath识别元素

    利用firepath进行元素识别提前已经安装好firebug和firepath 比如,打开http://www.baidu.com 1.按下F12 2.点击如图的位置 3.选择元素,可以定位出元素的属 ...

  3. 关于解决SSHD 连接 认证失败的问题

    网上找有很多方法,有时候情况不一样 ,也不实用 其实找到解决问题的思路更总要 首先分析日志文件 less /var/log/secure | grep sshd ,看具体出现什么问题 然后再去搜索相关 ...

  4. 关于linux 安装 python pymssql模块

    需要先安装freetds是一个开源的C程序库,它可以实现在Linux系统下访问操作微软的SQL数据库.可以用在Sybase的db-lib或者ct-lib库,在里面也包含了一个ODBC的库.允许许多应用 ...

  5. 【集成学习】lightgbm参数介绍(sklearn)

    #  XGBoost和LightGBM部分参数对比表: lightgbm.sklearn参数介绍(官网)

  6. loj517 计算几何瞎暴力

    在序列上维护4个操作 1.在序列的尾端添加x 2.输出Al~Ar的和 3.将所有数异或x 4.将序列从小到大排序 第一眼看上去是Splay于是头铁硬刚了一发 后来发现splay没法异或 去百度“维护异 ...

  7. HDU5768Lucky7(中国剩余定理+容斥定理)(区间个数统计)

    When ?? was born, seven crows flew in and stopped beside him. In its childhood, ?? had been unfortun ...

  8. C++ STL, sort用法。

    在algorithm头文件中的sort可以给任意对象排序,包括内置类型和自定义类型,前提是定义了“<“运算符. sort(begin,end),表示一个范围,例如: #include" ...

  9. vue 常见的新增、编辑、查看公用同一个页面

    用vue开发经常会碰到,一个功能的新增.编辑.查看公用同一个页面,如果是页面暂且不提. 但是弹框,很多人会发现,如果是点击编辑,取消,再点新增,弹框上面是会有残留数据的,为什么会这样呢,因为在点编辑的 ...

  10. oracle 12c 列式存储 ( In Memory 理论)

    随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...