题目描述

有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜, 伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置出现,他最多可以被多少人膜拜呢, 这个简单的问题JZ当然交给你了

输入格式

Line 1: A single integer: N (1 <= N <= 50,000)

Lines 2..N+1: Line i+1 contains two space-separated integers: A_i and B_i (1 <= A_i <= B_i; A_i <= B_i <= 1,000,000,000)

输出格式

Line 1: A single integer representing the largest number of cows whose grazing intervals can all contain the soda machine.


考虑暴力。

暴力当然是循环Ai到Bi然后把每个数都加起来啦~时间复杂度为O(N * Max(Bi))

既然是区间上的修改问题,我们可以想想线段树的做法。

每次用线段树修改Ai到Bi之间的区间的权值,然后查询1~Max(Bi)之间的最大值即可。时间复杂度为O(N * logMax(Bi))。似乎能跑得过诶。但数组根本开不下好吗?!

转变一下思路。设c[i]表示第i个位置可能有的膜拜JZ的人数,那么为了完成题目,我们需要对于每个Ai和Bi:

Ai~Bi之间的每个位置的前缀和都加一,但又不能Bi影响后面的地方。很容易想到用差分来做这题。对于每个Ai和Bi,我们可以:c[Ai]++,c[Bi+1]--。然后计算前缀和,最大的前缀和就是答案了。时间复杂度为O(N+Max(Bi))。但还是存在数组开不下的位置。

不同于之前的线段树做法,用差分做的时候就只用到了所有Ai和Bi的位置,其它地方的数组相当于浪费了。所以我们可以对所有位置离散化。那么时间复杂度就变成了可以接受的O(2 * NlogN+2 * N)≈O(NlogN)。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#define maxn 50001
using namespace std; map<int,int> mp;
int n; inline int read(){
register int x(0),f(1); register char c(getchar());
while(c<'0'||'9'<c){ if(c=='-') f=-1; c=getchar(); }
while('0'<=c&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
} int main(){
n=read();
for(register int i=1;i<=n;i++){
int a=read(),b=read();
mp[a]++,mp[b+1]--;
}
int ans=0,sum=0;
for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
sum+=(*it).second;
if(sum>ans) ans=sum;
}
cout<<ans<<endl;
return 0;
}

[usaco2010 Oct]Soda Machine的更多相关文章

  1. BZOJ 2501: [usaco2010 Oct]Soda Machine 离散+差分

    [usaco2010 Oct]Soda Machine Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 266  Solved: 182[Submit][ ...

  2. BZOJ2501: [usaco2010 Oct]Soda Machine

    n<=50000个区间,求哪个点被覆盖区间数量最多,输出这个数量. 差分模板..然而数组忘开两倍.. #include<stdio.h> #include<string.h&g ...

  3. BZOJ 2501 [usaco2010 Oct]Soda Machine

    [题意概述] 给出一个[0,1,000,000,000]的整数数轴,刚开始每个位置都为0,有n个区间加操作,最后询问数轴上最大的数是多少. [题解] 我写的是离散化后线段树维护区间最值. 其实貌似不用 ...

  4. BZOJ 2501 Soda Machine

    BIT+离散化. #include<iostream> #include<cstdio> #include<cstring> #include<algorit ...

  5. Soda Machine【差分+离散化】

    题目链接:https://ac.nowcoder.com/acm/contest/1106/A 题目大意: 1.一条长1e9的线段,每个节点都可以上色.给出n次操作,每次操作将[l, r]区间内的节点 ...

  6. bzoj usaco 金组水题题解(2.5)

    bzoj 2197: [Usaco2011 Mar]Tree Decoration 树形dp..f[i]表示处理完以i为根的子树的最小时间. 因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是 ...

  7. BZOJ-USACO被虐记

    bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...

  8. bzoj Usaco补完计划(优先级 Gold>Silver>资格赛)

    听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ---------------------------- ...

  9. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

随机推荐

  1. web服务器专题:tomcat(三)tomcat-user.xml 配置文件

    回顾:web服务器专题:tomcat(二)模块组件与server.xml 配置文件 Tomcat管理模块 安装Tomcat后,访问127.0.0.1/8080可以看到这个首页,上图中的三个按钮即为To ...

  2. vue第十九单元(mapState mapMutations等方法的使用)

    第十九单元(mapState mapMutations等方法的使用) #课程目标 1.熟练使用mapState 2.熟练使用mapGetters 3.熟练使用mapActions 4.熟练使用mapM ...

  3. [日常摸鱼]bzoj1038 [ZJOI2008]瞭望塔-模拟退火/几何

    题意:给一条平面内$n$个点的折线,要求在折线上搞一个高度$h$的瞭望塔,能够看见折线上所有的点,求$h$的最小值($n \leq 300$) updata2018.1.21 正解半平面交在另一篇里面 ...

  4. 第 13 章 StringTable详解

    目录 第 13 章 StringTable 1.String 的基本特性 1.1.String 概述 1.2.String 的基本特征 1.3.String 的底层结构 2.String 的内存分配 ...

  5. sqoop用法之mysql与hive数据导入导出

    目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...

  6. 开源项目葫芦藤:IdentityServer4的实现及其运用

    目录 前言 签名证书(Signing Credential) 客户端存储(Client Store) 资源存储(Resource Store) 持久化授权存储(Persisted Grant Stor ...

  7. java基础:数组详解以及应用,评委打分案例实现,数组和随机数综合,附练习案列

    1.数组 1.1 数组介绍 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致. 1.2 数组的定义格式 1.2.1 第一种格式 数据类型[] 数组名 示例: int[] arr;     ...

  8. Python批量创建word文档(1)- 纯文字

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...

  9. MQTT协议 局域网和广域网 云服务器和虚拟主机、VPS SSH和FTP、SFTP

     MQTT协议 MQTT协议就很好的解决了coap存在的问题.MQTT协议是由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议.MQTT协议采用发布/订阅模式,所有的物联网终端都通过TC ...

  10. Winform Dock顺序调整

    在布局的时候,当一个窗体内有多个控件使用了Dock属性来布局,Dock顺序的调整: 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化 ...