bzoj千题计划180:bzoj4411: [Usaco2016 Feb]Load balancing
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的更多相关文章
- BZOJ4411——[Usaco2016 Feb]Load balancing
1.题意: 给出N个平面上的点.保证每一个点的坐标都是正奇数. 你要在平面上画两条线,一条是x=a,一条是y=b,且a和b都是偶数. 直线将平面划成4个部分,要求包含点数最多的那个部分点数最少. 2. ...
- [bzoj4411] [Usaco2016 Feb]Load balancing
先离散化一下(也可以不用 枚举横坐标,用线段树维护两边纵坐标上的节点数. 每次在线段树上二分...(感觉似乎树状数组也行? #include<cstdio> #include<ios ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
随机推荐
- 简单模拟flume
NetCat方式: 远程访问的方式进行消息传递 配置一个Agent,主要配置三个组件: source, channel, sink 上图中为什么channel会带s,变成channels? 可以绑定多 ...
- 测试开发:Python+Django实现接口测试工具
Python+Django接口自动化 引言: 最近被几个公司实习生整自闭了,没有基础,想学自动化又不知道怎么去学,没有方向没有头绪,说白了其实就是学习过程中没有成就感,所以学不下去.出于各种花里胡哨的 ...
- python3【基础】-赋值与深浅拷贝
一.Python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址, ...
- BLE资料应用笔记 -- 持续更新(转载)
简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.’让我们’更深入地探索这些方面吧. 蓝牙无处不在—,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘 ...
- 《Linux内核设计与实现》读书笔记——第一、 二章
<Linux内核设计与实现>读书笔记--第一. 二章 标签(空格分隔): 20135321余佳源 第一章 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确 ...
- 祝贺自己操作系统JAVA项目有进展!!
先公布研发过程的心得吧!!! ^_^ /** * 作者:范铭祥 * 内容及功能: 显示框创造1.0 * 我将在这个类里 一:面板1:用来先显示一副图表示顺序和处理中 * 二:面板2:类1:用来显示要处 ...
- Photoshop的混合模式
1.亮度是一种颜色的相对亮度,饱和度是指一种颜色的纯度(颜色中包含多少灰) 2.混合模式 下层图片的颜色像素称为"基本颜色":选定的称为"混合"颜色,对于大部分 ...
- Alpha 冲刺一
团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 界面(简陋) 登录界 ...
- Alpha 冲刺八
团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 完善各自部分 项目描 ...
- Jira 添加自定义字段
打开添加自定义字段,并选择字段类型 填写名称,并创建 3.选择关联的界面,并更新