先二分答案转化成判定问题。

考虑拿一根扫描线从 \(x=0\) 扫到 \(x=n\),每次移动扫描线更新每个位置它上面的点数和下面的点数,这样可以确定在当前的扫描线上哪些位置对于 \(y\) 轴方向是合法的。对于 \(x\) 轴方向合法的点应该处的范围可以直接算出来,树状数组维护。

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n, uu, vv, siz[100005], upp[100005], loo[100005], ans1, ans2, c[100005];
vector<int> vx[100005];
int lb(int x){
return x&-x;
}
void add(int pos, int val){
if(pos==0) c[0]+=val,pos=n+n;
for(int i=pos; i<=n; i+=lb(i)) c[i] += val;
}
int query(int pos){
int re=0;
for(int i=pos; i; i-=lb(i)) re += c[i];
return re+c[0];
}
bool check(int k){
int num=0, l, r;
for(int i=0; i<=n; i++) upp[i] = 0, loo[i] = siz[i], c[i]=0;
for(int i=1; i<=n; i++){
int qwqq=vx[i-1].size();
for(int j=0; j<qwqq; j++){
int t=vx[i-1][j];
bool isok=(upp[t]>=k)&&(loo[t]>=k);
upp[t]++;
if(!isok && upp[t]>=k && loo[t]>=k) add(t, 1);
}
qwqq=vx[i].size();
bool flag=qwqq>=2*k;
if(flag) l=vx[i][k-1]+1, r=vx[i][vx[i].size()-k]-1;
for(int j=0; j<qwqq; j++){
int t=vx[i][j];
bool isok=(upp[t]>=k)&&(loo[t]>=k);
loo[t]--;
if(isok && !(upp[t]>=k && loo[t]>=k)) add(t, -1);
if(isok && flag && t>=l && t<=r) num--;
}
if(!flag || l>r) continue;
num += query(r) - query(l-1);
}
if(!num) return false;
ans1 = k; ans2 = num;
return true;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
scanf("%d %d", &uu, &vv);
vx[uu].push_back(vv);
siz[vv]++;
}
for(int i=0; i<=n; i++) sort(vx[i].begin(), vx[i].end());
int l=0, r=n, mid;
while(l<=r){
mid = (l + r) >> 1;
if(check(mid)) l = mid + 1;
else r = mid - 1;
}
cout<<ans1<<endl<<ans2<<endl;
return 0;
}

最新文章

  1. Win8 安装 Scrapy
  2. IA32寄存器与x86-64寄存器的区别
  3. [ubuntu] adb devices出现no permissions
  4. 轻松玩转jquery。
  5. 发布资源到Asset Store
  6. Multipath多路径冗余全解
  7. IOS学习之路十二(UITableView下拉刷新页面)
  8. Android_Handler
  9. BZOJ 4029 [HEOI 4029] 定价 解题报告
  10. 求一组数字序列的分布情况(java)
  11. 13-C语言字符串函数库
  12. Qt中Ui名字空间以及setupUi函数的原理和实现 &lt;转&gt;
  13. chrome切换hosts插件 hostsadmin
  14. springboot启动报错
  15. 19.2 MEMORY CONTROLLER
  16. Mysql MyISAM与InnoDB 表锁行锁以及分库分表优化
  17. SQL Server日志过大,清理日志
  18. Spring boot中普通工具类不能使用@Value注入yml文件中的自定义参数的问题
  19. chrome新版打开新标签页自动打开谷歌主页
  20. WCF系列教程之WCF消息交换模式之单项模式

热门文章

  1. Dima and Magic Guitar CodeForces - 366E
  2. 134 Gas Station 加油站
  3. 三色灯渐变DIY制作
  4. (办公)定时任务quartz入门
  5. iOS应用版本更新(自动提醒用户更新代码)
  6. yum install perl-ExtUtils-MakeMaker
  7. java实现排序的几种方法
  8. 中间件及tomcat的内存溢出调优
  9. SQL Server数据库的除法默认向下取整,要返回小数的解决方法
  10. QT+创建两个不相干的窗口实现一个显示一个不显示