【题意概述】

  给出一个[0,1,000,000,000]的整数数轴,刚开始每个位置都为0,有n个区间加操作,最后询问数轴上最大的数是多少。

【题解】

  我写的是离散化后线段树维护区间最值。

  其实貌似不用线段树QAQ...

#include<cstdio>
#include<algorithm>
#define N 400010
#define rg register
#define ls (u<<1)
#define rs (u<<1|1)
#define mid ((a[u].l+a[u].r)>>1)
using namespace std;
int n,ans,l[N],r[N],b[N];
struct tree{
int l,r,del,mx;
}a[N];
inline int read(){
int f=1,k=0; char c=getchar();
while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
return k*f;
}
inline int max(int a,int b){
return a>b?a:b;
}
inline void pushup(int u){
a[u].mx=max(a[ls].mx,a[rs].mx);
}
inline void pushdown(int u){
if(!a[u].del) return; int D=a[u].del; a[u].del=0;
a[ls].del+=D; a[ls].mx+=D;
a[rs].del+=D; a[rs].mx+=D;
}
void build(int u,int l,int r){
a[u].l=l; a[u].r=r; a[u].mx=0;
if(l<r) build(ls,l,mid),build(rs,mid+1,r);
}
void add(int u,int l,int r,int d){
if(l<=a[u].l&&a[u].r<=r){
a[u].del+=d; a[u].mx+=d; return;
}
pushdown(u);
if(l<=mid) add(ls,l,r,d);
if(r>mid) add(rs,l,r,d);
pushup(u);
}
int query(int u,int l,int r){
if(l<=a[u].l&&a[u].r<=r) return a[u].mx;
pushdown(u); int ret=0;
if(l<=mid) ret=query(ls,l,r);
if(r>mid) ret=max(ret,query(rs,l,r));
return ret;
}
int main(){
n=read();
for(rg int i=1;i<=n;i++){
l[i]=b[i]=read(); r[i]=b[i+n]=read();
}
sort(b+1,b+1+(n<<1)); int n2=unique(b+1,b+1+(n<<1))-b-1;
for(rg int i=1;i<=n;i++) l[i]=lower_bound(b+1,b+1+n2,l[i])-b;
for(rg int i=1;i<=n;i++) r[i]=lower_bound(b+1,b+1+n2,r[i])-b;
// for(rg int i=1;i<=n;i++){
// printf("%d %d\n",l[i],r[i]);
// }
// printf("n2=%d\n",n2);
ans=0; build(1,1,n2);
for(rg int i=1;i<=n;i++){
add(1,l[i],r[i],1);
}
for(rg int i=1;i<=n2;i++){
ans=max(ans,query(1,i,i));
//printf("%d\n",query(1,i,i));
}
printf("%d\n",ans);
return 0;
}

  

BZOJ 2501 [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. [usaco2010 Oct]Soda Machine

    题目描述 有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜, 伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置 ...

  3. BZOJ2501: [usaco2010 Oct]Soda Machine

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

  4. [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游

    [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ...

  5. BZOJ 2501 Soda Machine

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

  6. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP

    [Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...

  7. 【树形DP/搜索】BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会

    1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 793  Solved: 354[Sub ...

  8. bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形 容斥

    1914: [Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 272  Sol ...

  9. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会

    Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,0 ...

随机推荐

  1. 桌面系统集成WEB认证系统方案

    最近做的一个项目,有WEB版.WPF版.手机版.领导想集成集团的一个现成的认证系统,姑且称这个认证系统名为 W4认证系统. W4认证系统有如下特点: 1.现成的 2.是个单点登录系统 3.不支持oAu ...

  2. mp3播放时间

    import os os_sep = os.sep this_file_abspath = os.path.abspath(__file__) this_file_dirname, this_file ...

  3. leaning website

      -->SoapUI http://soapui-tutorial.com/home/login/SOAPUI    Module 13 - 1, 2, 3, 4, 5, 6 Module 1 ...

  4. 超级有用的git reset --hard和git revert命令

    很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以 ...

  5. adb 命令模拟按键事件 【转】

    本文转载自:http://blog.sina.com.cn/s/blog_68f262210102vc1b.html 转自:http://blog.csdn.net/jlminghui/article ...

  6. [linux环境配置]个人用持续更新ing~

    alias ll='ls -la' export PATH=$PATH:~/Desktop/myscript alias gpush='git push origin HEAD:refs/for/ma ...

  7. bzoj2216

    决策单调性+整体二分 这里就是j<k且kj劣于j,j不会再选,所以我们整体二分 pos是因为从L->R中这个是最优点,所以对于mid+1->r选pos之前肯定不优,l->mid ...

  8. Kubernetes 集群中使用 Helm 搭建 Spinnaker

    在我们部署Spinnaker之前,我们需要一个YAML格式的配置文件,它会包含了一些配置信息.可以从Spinnaker Helm Chart repository[2]获得这个文件. $curl -L ...

  9. 【知识总结】多项式全家桶(一)(NTT、加减乘除和求逆)

    我这种数学一窍不通的菜鸡终于开始学多项式全家桶了-- 必须要会的前置技能:FFT(不会?戳我:[知识总结]快速傅里叶变换(FFT)) 以下无特殊说明的情况下,多项式的长度指多项式最高次项的次数加\(1 ...

  10. ACM_滚动AC

    滚动AC Time Limit: 2000/1000ms (Java/Others) Problem Description: 小光最近拉了几个同学入ACM的坑,为鼓励A题,就增加奖励制度:每AC三道 ...