[bzoj4411] [Usaco2016 Feb]Load balancing
先离散化一下(也可以不用
枚举横坐标,用线段树维护两边纵坐标上的节点数。
每次在线段树上二分。。。(感觉似乎树状数组也行?
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
const int mxnode=;
struct poi{
int x,y;
}a[maxn];
struct yy{
int y,id;
}y[maxn];int cnty;
int sz[][mxnode],lnum[],rnum[];
int i,j,k,n,m,ans,size; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while(rx<''||rx>'')rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
bool cmpy(yy a,yy b){return a.y<b.y;}
bool cmppoi(poi a,poi b){return a.x<b.x;}
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline int query(){
int p=,lc,rc;bool flag=;
lnum[]=lnum[]=rnum[]=rnum[]=;
while(){
lc=p<<,rc=lc|;
if(p>size)lc=rc=p,flag=;
if(max(lnum[]+sz[][lc],lnum[]+sz[][lc]) < max(rnum[]+sz[][rc],rnum[]+sz[][rc]))
lnum[]+=sz[][lc],lnum[]+=sz[][lc],p=rc;
else rnum[]+=sz[][rc],rnum[]+=sz[][rc],p=lc;
//printf(" %d %d %d %d %d\n",lnum[0],lnum[1],rnum[0],rnum[1],p);
if(flag)
return max(max(lnum[],lnum[]),max(rnum[],rnum[]));
} }
int main(){
n=read();
for(i=;i<=n;i++)a[i].x=read(),a[i].y=y[i].y=read(),y[i].id=i;
sort(y+,y++n,cmpy);
for(i=;i<=n;i++)
cnty+=y[i].y!=y[i-].y,a[y[i].id].y=cnty;
for(size=;size<cnty;size<<=);size--;//printf(" %d\n",size);
sort(a+,a++n,cmppoi); for(i=;i<=n;i++)
++sz[][a[i].y+size];
for(i=size;i;i--)sz[][i]=sz[][i<<]+sz[][i<<|]; int now=;ans=query();
for(i=;i<=n;i++)if(a[i].x!=a[i+].x)
{
// printf("try:%d\n",a[i].x);
for(;now<=i;now++)
for(j=a[now].y+size;j;j>>=)++sz[][j],--sz[][j];
ans=min(ans,query());
}
printf("%d\n",ans);
return ;
}
[bzoj4411] [Usaco2016 Feb]Load balancing的更多相关文章
- BZOJ4411——[Usaco2016 Feb]Load balancing
1.题意: 给出N个平面上的点.保证每一个点的坐标都是正奇数. 你要在平面上画两条线,一条是x=a,一条是y=b,且a和b都是偶数. 直线将平面划成4个部分,要求包含点数最多的那个部分点数最少. 2. ...
- bzoj千题计划180:bzoj4411: [Usaco2016 Feb]Load balancing
http://www.lydsy.com/JudgeOnline/problem.php?id=4411 用树状数组维护扫描线 一个树状数组维护扫描线之上的y<=i点,另一个维护扫描线之下y&l ...
- BZOJ 4411: [Usaco2016 Feb]Load balancing 线段树+二分
code: #include <bits/stdc++.h> #define N 100060 #define M 1000000 #define lson x<<1 #def ...
- bzoj4409&&bzoj4410&&bzoj4411[Usaco2016 Feb Platinum]题解
辣鸡wyz最近状态奇差,于是想用usaco题找找手感,万万没想到被虐了一脸TAT 先贴代码,有空再填坑 4409[Usaco2016 Feb]Circular barn #include <io ...
- 【架构】How To Use HAProxy to Set Up MySQL Load Balancing
How To Use HAProxy to Set Up MySQL Load Balancing Dec 2, 2013 MySQL, Scaling, Server Optimization U ...
- CF# Educational Codeforces Round 3 C. Load Balancing
C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心
C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...
- UVA 12904 Load Balancing 暴力
Load Balancing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vi ...
- Load Balancing 折半枚举大法好啊
Load Balancing 给出每个学生的学分. 将学生按学分分成四组,使得sigma (sumi-n/4)最小. 算法: 折半枚举 #include <iostrea ...
随机推荐
- VR\AR 使用 SceneKit
VR\AR 使用 SceneKit http://www.jianshu.com/c/70d63e3941fd
- 安装puppet
安装puppet服务 先安装ruby语言包.ruby标准库.ruby shadow库 yum install -y ruby ruby-libs ruby-shadow 2.需要添加EPRL库,来支持 ...
- Mybatis-----优化配置文件,基于注解CR
这篇主要写配置文件的优化,例如 jdbc.properties 配置文件 ,引入数据库的文件,例如driver,url,username,password 等,然后在 SqlMapConfig.x ...
- nginx编译参数的内容
最近公司安排我安装几台云服务器环境 采用nginx做反向代理: 查了一下官方文档,参数比较多,很多在上线后 可能才知道注意一下的. 编译安装nginx的话 需要安装一些前置组件: 1.gcc环境:用于 ...
- Linux Centos 使用 yum 安装java
centos 使用 yum 安装java 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | grep -E '^op ...
- 第二节 安装CentOS
Linux 第二节一.安装VNware workstation 10二.安装CentOS 1.root/123456 用户登录[root@localhost ~]# 2.关机 init 0 3.ifc ...
- 缓存(Cache)
l如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差.而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能.这样无论有多少人访 ...
- Python函数篇(7)-正则表达式
1.正则表达式 正则表达式为高级的文本模式匹配,抽取,与/或文本形式的搜索和替换功能提供了基础,简单的来说,正则表达式是由一些字符和特殊符号组成的字符串.Python通过标准库中的re模块来支持正 ...
- python科学计算_numpy_ndarray
ndarray:n-dimensional array object,即多维数组对象,是python自带的array对象的扩展,array对象和list对象的区别是array对象的每一个元素都是数值, ...
- Javascipt数组
Javascipt数组 在Javascript中数组的做用是:使用单独的变量名来储存一系列的值. 数组只有一个属性,就是length,length表示的数组所占内存空间的数目. <!DOCTYP ...