题目描述

有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. jmeter处理加密接口

    jmeter处理加密接口 普及知识点: 我们常见的加密方式有:(RSA .AES.MD5.secret) 如下四种情况: 1.请求加密.响应加密 2.请求不加密.响应加密 4.请求加密.响应不加密 5 ...

  2. css 16-浏览器的兼容性问题

    16-浏览器的兼容性问题 我们在div里放一个img,发现: 在html和html5中,div的长宽是不同的,后者的高度要超过几个像素. 比如说,下面这个是html的. <!DOCTYPE ht ...

  3. 2020年下征文+没有计算机经验的宝妈也可以轻松领证一次过关啦 nice !相信努力总会收获

    2020年下征文+没有计算机经验的宝妈也可以轻松领证http://www.1634.com.cn/ruankao/forum.php?mod=viewthread&tid=5363&f ...

  4. 个人微信公众号搭建Python实现 -个人公众号搭建-被动回复消息建模(14.3.2)

    @ 目录 1.阅读官方文档 2.思考 关于作者 1.阅读官方文档 点击进入微信官方开发者文档 接收普通消息 文本消息 图片消息 语言消息 视频消息 小视频消息 地理位置消息 链接消息 接收事件消息 关 ...

  5. 一目了然的 Node.js Windows10 安装篇

    本篇文章 介绍 NodeJS 的安装 及环境变量配置 Node JS 的 了解 1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 ...

  6. HCIP --- MPLS BGP 实验

    实验要求: 实验拓扑: 一.配置IP地址 二.给AS 2配置OSPF 1.R2-R7配置相同: 查看路由表: 可以看到,业务网段学的是32位的 修改:在R2-R7上都修改 [R2]int loo1[R ...

  7. 实验1 C语言开发环境使用和编程初体验

    #include <stdio.h> #include <stdlib.h> int main() { printf ("202083290273\n2020 ,wh ...

  8. 区块链从零开始做开发(0):hyperledger Fabric2.3安装

    一.前言 各位看官好,这是本人第一篇技术博客. 写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录.以前都是作为一个读者,这次终于有机会能够 ...

  9. C语言I博客作业1

    1 .班级链接: https://edu.cnblogs.com/campus/zswxy/SE2020-3 2 .作业要求链接: https://edu.cnblogs.com/campus/zsw ...

  10. rocketmq 架构设计

    1 消息存储 消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构.PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面 ...