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. web前端开发随手笔记 - 持续更新

    本文仅为个人常用代码整理,供自己日常查阅 html 浏览器内核 <!--[if IE]><![endif]--> <!--[if IE 6]><![endif ...

  2. Axiom3D学习日记 5.Frame Listeners, and Input Handling

    Frame Listeners In Ogre's C++, we would register a class to receive notification before and after a ...

  3. 在C语言中使用scanf语句时遇到的问题总结

    在使用visual studio2013编写c语言代码时,遇到了这样的几个小问题,进行如下的总结. 1, 关于使用scanf语句报错的解决方案1 #include <stdio.h> in ...

  4. java 计算器SWT/RAP(版本3)键盘鼠标兼容

    java 计算器SWT/RAP(版本3)键盘鼠标兼容,之前版本也对,但存在线程失效问题,当多人访问时,就容易线程失效,一直犯得一个错误就是一直用static变量和static方法, 之前加了什么js界 ...

  5. SGU 230. Weighings (拓扑排序)

    题意: 给出质量为1~n的n个箱子的m对轻重关系,输出一种可能的箱子的质量排列. Solution: 拓扑排序,注意要处理重边. #include <iostream> #include ...

  6. Linux嘚瑟一时的Shared Object

    场景概述 近来接触node程序以及负责实现node扩展来对象本地SDK的调用,旨在借node及其第三方库来快速实现RESTful API以及给浏览器端使用.当然这中间研究工作耗了不少时间. 在实现目标 ...

  7. CSS3的过渡效果(transition)与动画(animation)

    1.Transition Transition是一种直观上的效果,让DOM元素的某个属性在固定时间内从一旧值到一新值.目前Firefox.Opera.Safari和Chrome都支持transitio ...

  8. TatukGIS - GisDefs - CanonicalSQLName 函数

    函数名称  CanonicalSQLName 所在单元  GisDefs 函数原型  function CanonicalSQLName(const _name: String; const _tem ...

  9. Python【第七篇】面向对象进阶

    大纲 一.面向对象高级语法 1.静态方法.类方法.属性方法 2.类的特殊成员方法 3.反射 二.异常处理 三.网络编程之socket基础 一.面向对象高级语法 1.静态方法:名义上归类管理,实际上静态 ...

  10. Day10 网络编程(续)

    作用域 Python的作用域是函数,没有块级作用域 if 1 == 1: name = 'wang' print(name) #wang   for i in range(10): name = i ...