P1569 -- 喝水

时间限制:2000MS      内存限制:131072KB

状态:Accepted      标签:    无   无   无

Description

GH的N个妹子要喝水,喝水有个时间从A时刻开始到B时刻结束。求最少需要多少个水龙头供水(GH的妹子都用水龙头喝水。。。。。。。。。。)

Input Format

输入第一行一个数N,接下来N行每行一对A,B。

Output Format

输出一个数为答案。

Sample Input

5
1 10
2 4
3 6
5 8
4 7

Sample Output

4

Hint

对于10%的数据N<=10

对于100%的数据N<=2000000,A,B<=15000000

本题输入文件不超过35M,建议开启输入优化。

题解

这道题是区间覆盖的问题。不难看出只要区间不相交的所有区间都可以公用一个水龙头。我们可以用“差分“来解决这个问题。对于区间[A,B],差分数组Q[A]++, Q[B + 1]--。不难看出,这样一直做下去,会先把[A,B],[B + 1, C]这样的区间合并在一起。最后遍历差分数组,用Cnt += Q[i], Ans = Max(Ans, Cnt)。答案即Ans。之所以要取一个Max,因为右端点会减一,且会和左端点加一把不相交的区间只算一次,Cnt最大的时候表示的即答案。

代码

 #include <cstdio>
#include <iostream>
#define SIZE 15000010
#define INF 210000000
using namespace std; char B[<<],*S=B,*T=B;char getc(){
return S==T&&(T=(S=B)+fread(B,,<<,stdin),S==T)?:*S++;
}
#define isd(c) (c>='0'&&c<='9')
int aa,bb;char ch;int Scan(){
while(ch=getc(),!isd(ch)&&ch!='-');ch=='-'?aa=bb=:(aa=ch-'',bb=);
while(ch=getc(),isd(ch))aa=aa*+ch-'';return bb?aa:-aa;
} int N;
int L = INF, R;
int Left, Right;
int Q[SIZE];
int Cnt, Ans; int Min(int A, int B) {
return A < B ? A : B;
} int Max(int A, int B) {
return A > B ? A : B;
} int main() {
N = Scan();
for (int i = ; i <= N; ++i) {
Left = Scan(); Right = Scan();
L = Min(Left, L);
R = Max(Right, R);
++Q[Left];
--Q[Right + ];
}
for (int i = L; i <= R + ; ++i) Cnt += Q[i], Ans = Max(Ans, Cnt);
printf("%d\n", Ans);
}

FZYZOJ-1569 喝水的更多相关文章

  1. [BZOJ 3441]乌鸦喝水

    3441: 乌鸦喝水 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 374  Solved: 148[Submit][Status][Discuss] ...

  2. Bzoj3441 乌鸦喝水

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 258  Solved: 97 Description [题目背景]     一只乌鸦在自娱自乐,它在面 ...

  3. BZOJ:3441 乌鸦喝水

    bzoj:3441 乌鸦喝水 题目传送门 Description 一只乌鸦在自娱自乐,它在面前放了n个有魔力的水缸,水缸里装有无限的水. 他准备从第1个水缸飞到第n个水缸,共m次.在飞过一个水缸的过程 ...

  4. 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏

    T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...

  5. 推荐一款健康App 多喝水,引领全民时尚喝水生活习惯

    推荐一款健康App 多喝水,引领全民时尚喝水生活习惯 1 介绍 多喝水,一款鼓励大众喝水的APP.我们倡导大众健康生活,培养人们爱喝水的习惯,让每一次喝水,都能产生价值,让人们在喝水的同时,可享受赚钱 ...

  6. 通过喝水清晰简单了解I/O五大模型

    一般单次I/O请求会分为两个阶段,每个阶段对于I/O的处理方式是不同的 I/O会经历一个等待资源的阶段 阻塞,指的是在数据不可用时,I/O请求会一直阻塞,直到数据返回 数据不可用时,立即返回,直到被通 ...

  7. ACM-牛喝水

    题目描述:牛喝水  The cows have a line of 20 water bowls from which they drink. The bowls can be either righ ...

  8. 【bzoj3441】乌鸦喝水

    Source bzoj3441 Hint 请先思考后再展开 按被删除的顺序考虑每个点,然后按照题意模拟 Solution 请先思考后再展开 被删除的顺序一定是按照[能被操作的次数]为第一关键字,位置作 ...

  9. 「模拟8.18」字符串(卡特兰数)·乌鸦喝水(树状数组,二分)·所驼门王的宝藏(tarjan,拓扑)

    最近好颓啊,所以啥都做不出来 简单说一下这次考试,分机房了,还分不同考卷,果然我还是留在二机房的蒟蒻, 大概也只有这样的简单题,才能勉强水个rank 3吧........ 其实不必管在哪个机房,努力便 ...

随机推荐

  1. linux 简单命令

    很久没有接触linux了,很多命令也忘记了,现在自己独立安装一个linux,独立安装LAMP,让自己记录下来这段. 怎么进入命令行 init 3, 回到桌面 init 5在不是root用户情况下,切换 ...

  2. 45种Javascript技巧大全

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...

  3. 自定义图文混排视图MyImageTextView

    http://blog.csdn.net/xujunfeng000/article/details/36399339?utm_source=tuicool&utm_medium=referra ...

  4. Bootstrap Table的例子(转载)

    转载自:http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html#classes-table 使用的API: data1.json da ...

  5. [转帖]音响及DarBee

    红外与蓝牙的差别 1.距离 红外:对准.直接.1—2米,单对单 红外线可以用你的手机摄像头看到  蓝牙:10米左右,可加强信号,可以绕弯,可以不对准,可以不在同一间房间,链接最大数目可达7个,同时区分 ...

  6. JS中escape 方法和C#中的对应

    在项目中遇到js中escape过的json字符串,需要在C#中对应模拟编码,记得原来遇到过这个问题,但是当时没记录下来方案, 于是又搜索了一番,发现别人说的都是HttpUtility.UrlEncod ...

  7. 理解pkg-config工具

    你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中.然后,告诉你的同事说,你可以取下来用了.这时,你长长的出了一口气,几天的 ...

  8. Codeforces 527E Data Center Drama(欧拉回路)

    题意: 给定一个无向图连通图,把这个的无向边变成有向边,并添加最少的有向边使这个图每个结点的出度为偶数. Solution: 题目很长,并且很多条件说的不太直接,确实不太好懂. 首先先看得到的无向图, ...

  9. css编译工具Sass中混合宏,继承,占位符分别在什么时候使用

    //SCSS中混合宏使用 @mixin mt($var){ margin-top: $var; } .block { @include mt(5px); span { display:block; @ ...

  10. Bootstrap_表单_表单提示信息

    平常在制作表单验证时,要提供不同的提示信息.在Bootstrap框架中也提供了这样的效果.使用了一个"help-block"样式,将提示信息以块状显示,并且显示在控件底部. < ...