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;
}

最新文章

  1. NPM 无法下载任何包的原因,解决方法
  2. a
  3. 转 LoadRunner 技巧之协议分析
  4. 关于process
  5. activiti自定义流程之自定义表单(一):环境配置
  6. [ActionScript 3.0] AS3 3D双圆环贴图
  7. Web开发基础
  8. 我的Android进阶之旅------&gt;Android拍照小例子
  9. hdu2208之搜索
  10. Redis intset
  11. 联想E430Cwindow8系统换成win7
  12. JAVA中计算两个时间相差多少 天,时,分,秒
  13. ecos的model
  14. VR全景智慧城市:360全景市场需要背景及其优势~
  15. Win8打开chm右侧空白解决方法
  16. grunt学习笔记1 理论知识
  17. IDEA_构建Maven项目报错(1)
  18. 三、Python-列表
  19. Dart Map&lt;&gt; 添加 元素
  20. java项目使用mvn打包时,出现数据库连接错误

热门文章

  1. node基础:文件系统-文件读取
  2. Unity3d-通过简单示例来理解Time.deltaTime
  3. openstack horizon 开发第三天
  4. 【Alpha】功能规格说明书
  5. 基于 Java Web 的毕业设计选题管理平台--系统设计和任务分配
  6. 在ubuntu下运行python脚本
  7. aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能
  8. python--inspect模块
  9. Spring Shell介绍
  10. fgt2eth Script