【题意概述】

  给出一个[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. C# LIstbox 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题

    解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题 分类: winform2008-05-24 02:33 2592人阅读 评论(11) 收藏 举报 winf ...

  2. 【POJ 1845】 Sumdiv

    [题目链接] 点击打开链接 [算法] 不妨先将A分解质因数 A = p1^q1p2^p2p3^p3..pn^qn 那么,A^B = p1^q1Bp2^q2B...pn^qnB 根据约数和定理,A^B的 ...

  3. Mechanize抓取数据【Ruby】

    创建: 2017/08/05 更新: 2018/01/08 修正: ele_inner_text -> ele.inner_text                           补充: ...

  4. php中strlen,mb_strlen,count之区别

    转自 http://www.cnblogs.com/mo-beifeng/archive/2011/08/09/2133039.html 这不是一个固定的数字.本文简要说明一下限制规则. strlen ...

  5. python抢票开发——设备预约助手实现

    女朋友是药学院的,做实验时需要在特定的网站上进行设备预约,由于预约人数过多,从而导致从浏览器登录不进去或者登录进去预约失败等情况,所以我用python帮她写了一个抢位助手,让程序自动去进行位置预定,实 ...

  6. printf的字符型

    参  数 说  明 %s 按实际宽度输出一个字符串 %ms m指定宽度(不足时左补空格,大于时按实际宽度输出) %-ms 左对齐,不足时右补空格 %m.ns 输出占m个字符位置,其中字符数最多n个,左 ...

  7. --NSArray与NSMutableArray用copy修饰还是strong(转)

    一.NSMutableArray 被copy.strong修饰后的变化: 把NSMutableArray用copy修饰有时就会crash,因为对这个数组进行了增删改操作,而copy后的数组变成了不可变 ...

  8. java 任意时间转换日期类型

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); try { Date dd=sdf.parse("201 ...

  9. fcc html5 css 练习2

    <form action="/submit-cat-photo" >action属性的值指定了表单提交到服务器的地址 <input type="text ...

  10. DB2使用收集

    db2命令收集 创建带分区的表: create table  table_name( )in table_space index in index_space partition by range(c ...