code:

#include <bits/stdc++.h>
#define N 100060
#define M 1000000
#define lson x<<1
#define rson x<<1|1
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,num[N*10],ans=N,X0,X1;
struct node
{
int x0,x1;
}t[N*10*4];
struct Point
{
int x,y;
friend bool operator<(Point a,Point b) { return a.y<b.y; }
}a[N];
void pushup(int x)
{
t[x].x0=t[lson].x0+t[rson].x0;
t[x].x1=t[lson].x1+t[rson].x1;
}
void build(int x,int l,int r)
{
if(l==r)
{
t[x].x0=num[l];
t[x].x1=0;
return;
}
int mid=(l+r)>>1;
build(lson,l,mid);
build(rson,mid+1,r);
pushup(x);
}
void update(int x,int l,int r,int p)
{
if(l==r)
{
t[x].x0--,t[x].x1++;
return;
}
int mid=(l+r)>>1;
if(p<=mid) update(lson,l,mid,p);
else update(rson,mid+1,r,p);
pushup(x);
}
int ask(int x,int l,int r,int x0,int x1)
{
if(l==r) return l;
int mid=(l+r)>>1;
int sum0=x0+t[lson].x0,sum1=x1+t[lson].x1;
if(max(sum0,sum1)>=max(t[1].x0-sum0,t[1].x1-sum1))
{
return ask(lson,l,mid,x0,x1);
}
else
{
return ask(rson,mid+1,r,sum0,sum1);
}
}
void qsum(int x,int l,int r,int L,int R)
{
if(L>R) return;
if(l>=L&&r<=R)
{
X0+=t[x].x0;
X1+=t[x].x1;
return;
}
int mid=(l+r)>>1;
if(L<=mid) qsum(lson,l,mid,L,R);
if(R>mid) qsum(rson,mid+1,r,L,R);
}
int main()
{
// setIO("input");
int i,j;
scanf("%d",&n);
for(i=1;i<=n;++i) scanf("%d%d",&a[i].x,&a[i].y), num[a[i].x]++;
sort(a+1,a+1+n);
build(1,1,M);
for(i=1,j;i<=n;i=j)
{
j=i;
while(j<=n&&a[j].y==a[i].y) update(1,1,M,a[j].x),++j;
int pos=ask(1,1,M,0,0);
X0=0,X1=0,qsum(1,1,M,1,pos);
ans=min(ans,max(X0,X1));
X0=0,X1=0,qsum(1,1,M,1,pos-1);
ans=min(ans,max(t[1].x0-X0,t[1].x1-X1));
}
printf("%d\n",ans);
return 0;
}

  

BZOJ 4411: [Usaco2016 Feb]Load balancing 线段树+二分的更多相关文章

  1. BZOJ 1593: [Usaco2008 Feb]Hotel 旅馆 [线段树]

    传送门 题意: 操作1:找长为$len$的空区间并填满,没有输出$0$ 操作2:将$[l,r]$之间的区间置空 我真是太弱了这种线段树还写了一个半小时,中间为了查错手动模拟了$30min$线段树操作, ...

  2. [bzoj4411] [Usaco2016 Feb]Load balancing

    先离散化一下(也可以不用 枚举横坐标,用线段树维护两边纵坐标上的节点数. 每次在线段树上二分...(感觉似乎树状数组也行? #include<cstdio> #include<ios ...

  3. BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch ——线段树 CDQ分治

    显然dp[i][j]=ps[i-1][j-1]-sigma(dp[k<i][l<j],a[i][j]=a[k][l]) 考虑对于每一种颜色都开一颗区间线段树,但是空间不够. 所以我们可以动 ...

  4. bzoj千题计划180:bzoj4411: [Usaco2016 Feb]Load balancing

    http://www.lydsy.com/JudgeOnline/problem.php?id=4411 用树状数组维护扫描线 一个树状数组维护扫描线之上的y<=i点,另一个维护扫描线之下y&l ...

  5. BZOJ4411——[Usaco2016 Feb]Load balancing

    1.题意: 给出N个平面上的点.保证每一个点的坐标都是正奇数. 你要在平面上画两条线,一条是x=a,一条是y=b,且a和b都是偶数. 直线将平面划成4个部分,要求包含点数最多的那个部分点数最少. 2. ...

  6. [BZOJ 2653] middle(可持久化线段树+二分答案)

    [BZOJ 2653] middle(可持久化线段树+二分答案) 题面 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整. 给你一个长度为n的序 ...

  7. Codeforces Gym 100803G Flipping Parentheses 线段树+二分

    Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...

  8. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

  9. hdu4614 线段树+二分 插花

    Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N ...

随机推荐

  1. 用ab每隔30分钟并发一次休息10分钟

    linux脚本监控程序运行情况(重启程序)主要有两种情况:一种是一个可执行文件:如shell脚本文件:另一种是使用python打开的多个程序.第一种:它的进程名字由路径名字和程序名字组成,比如:我有个 ...

  2. 【spring boot】【redis】spring boot基于redis的LUA脚本 实现分布式锁

    spring boot基于redis的LUA脚本 实现分布式锁[都是基于redis单点下] 一.spring boot 1.5.X 基于redis 的 lua脚本实现分布式锁 1.pom.xml &l ...

  3. 安装软件时出现这样错误:文件“proe50-1a.bin”无法在“C:\User\ZFTL\Desktop\proe50”定位,请插入正确的磁盘或选择其他文件夹

    把里面的文件改成proe50-1a.bin就可以了.

  4. VC/MFC如何添加启动界面

    2015-05 转自 香远益清原文VC/MFC如何添加启动界面 1.基于框架类的应用程序添加启动画面的步骤(利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h ...

  5. HTML5深入学习之 WebSQL 数据库

    概述 WebSQL 并不是 HTML5规范的一部分,而是一个独立的规范,它可以用来做一些离线应用 核心API openDatabase() => 用来打开或创建数据库(没有时则创建,有则打开) ...

  6. NGINX一览无余

    Nginx 是如何实现高并发的? 异步,非阻塞,使用了epoll 和大量的底层代码优化. 如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数.正常情况下,会有很多进程一 ...

  7. selenium.获取浏览器大小、设置浏览器位置、最大化浏览器

    此篇博客学习控制浏览器的api,分别有: get_window_size() 获取浏览器大小 set_window_size() 设置浏览器位置 get_window_position() 获取浏览器 ...

  8. .Net core3.0 集成swagger5.0上传文件

    .Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了. 我们知道,如果.net core 2.x使用swagger上传文 ...

  9. cad 画图面板的尺寸大小定义

    输入limits 输入左下角点为 0,0 输入右上角点为大家需要的数  这里为100,50 输入zoom 输入a 就可以实现自定义编辑 注意事项 如果在你已经操作过的图纸上可能会失效 重新建一张图纸就 ...

  10. less使用手记 主题切换 全局import less

    实现主题颜色切换 components/theme.less,跟据@theme读取主题布局 @theme: dark; .dark-theme (@transparency) when (@theme ...