http://www.lydsy.com/JudgeOnline/problem.php?id=4411

用树状数组维护扫描线

一个树状数组维护扫描线之上的y<=i点,另一个维护扫描线之下y<=i的点

将点按x排好序,开始全部插入扫描线之下的树状数组

枚举x这一条线,线上的在第一个树状数组里加上,第二个树状数组里减去

最大值是一个单峰函数

可以用二分或三分

二分的话,哪边大往哪边移

#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 100001 #define lowbit(x) x&-x int m; int c[][N*]; struct node
{
int x,y;
}e[N]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} bool cmp(node p,node q)
{
return p.x<q.x;
} void add(int t,int x,int w)
{
while(x<=m)
{
c[t][x]+=w;
x+=lowbit(x);
}
} int query(int t,int x)
{
int sum=;
while(x)
{
sum+=c[t][x];
x-=lowbit(x);
}
return sum;
} int main()
{
int n;
read(n);
for(int i=;i<=n;++i)
{
read(e[i].x);
read(e[i].y);
m=max(m,e[i].y);
}
for(int i=;i<=n;++i) add(,e[i].y,);
sort(e+,e+n+,cmp);
int j;
int ans=n;
int l,r,mid,tmp;
int sum0,sum1,tot0,tot1;
for(int i=;i<=n;i=j)
{
j=i;
while(j<=n && e[j].x==e[i].x)
{
add(,e[j].y,-);
add(,e[j].y,);
j++;
}
l=; r=m;
tot0=query(,m);
tot1=query(,m);
tmp=;
while(l<=r)
{
mid=l+r>>;
sum0=query(,mid);
sum1=query(,mid);
if(max(sum0,sum1)>=max(tot0-sum0,tot1-sum1))
{
tmp=mid;
r=mid-;
}
else l=mid+;
}
sum0=query(,tmp);
sum1=query(,tmp);
ans=min(ans,max(max(sum0,sum1),max(tot0-sum0,tot1-sum1)));
}
cout<<ans;
}

bzoj千题计划180:bzoj4411: [Usaco2016 Feb]Load balancing的更多相关文章

  1. BZOJ4411——[Usaco2016 Feb]Load balancing

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

  2. [bzoj4411] [Usaco2016 Feb]Load balancing

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

  3. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  4. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  5. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  6. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  7. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  8. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  9. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

随机推荐

  1. 简单模拟flume

    NetCat方式: 远程访问的方式进行消息传递 配置一个Agent,主要配置三个组件: source, channel, sink 上图中为什么channel会带s,变成channels? 可以绑定多 ...

  2. 测试开发:Python+Django实现接口测试工具

    Python+Django接口自动化 引言: 最近被几个公司实习生整自闭了,没有基础,想学自动化又不知道怎么去学,没有方向没有头绪,说白了其实就是学习过程中没有成就感,所以学不下去.出于各种花里胡哨的 ...

  3. python3【基础】-赋值与深浅拷贝

    一.Python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址, ...

  4. BLE资料应用笔记 -- 持续更新(转载)

    简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.’让我们’更深入地探索这些方面吧. 蓝牙无处不在—,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘 ...

  5. 《Linux内核设计与实现》读书笔记——第一、 二章

    <Linux内核设计与实现>读书笔记--第一. 二章 标签(空格分隔): 20135321余佳源 第一章 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确 ...

  6. 祝贺自己操作系统JAVA项目有进展!!

    先公布研发过程的心得吧!!! ^_^ /** * 作者:范铭祥 * 内容及功能: 显示框创造1.0 * 我将在这个类里 一:面板1:用来先显示一副图表示顺序和处理中 * 二:面板2:类1:用来显示要处 ...

  7. Photoshop的混合模式

    1.亮度是一种颜色的相对亮度,饱和度是指一种颜色的纯度(颜色中包含多少灰) 2.混合模式 下层图片的颜色像素称为"基本颜色":选定的称为"混合"颜色,对于大部分 ...

  8. Alpha 冲刺一

    团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 界面(简陋) 登录界 ...

  9. Alpha 冲刺八

    团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 完善各自部分 项目描 ...

  10. Jira 添加自定义字段

    打开添加自定义字段,并选择字段类型 填写名称,并创建 3.选择关联的界面,并更新