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

考虑拿一根扫描线从 \(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;
}

luogu3415 祭坛的更多相关文章

  1. BZOJ2934 : [Poi1999]祭坛问题

    对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用at ...

  2. luoguP3415 祭坛

    https://www.luogu.org/problemnew/show/P3415 考虑二分结界层数,将 n 个点按 x 大小依次加入答案,一行一行的做,用树状数组维护当前这一行中[0, x - ...

  3. luogu 3415 祭坛

    题目大意: 在平面上,有 n 个水晶柱,每个水晶柱可以用一个点表示 如果 4 个水晶柱依次相连可以构成一个四边形,满足其两条对角线分别平行于 x 轴和 y 轴,并且对角线的交点位于四边形内部(不包括边 ...

  4. Introduction to neural network —— 该“神经网络” 下拉“祭坛”

    Introduction to neural network 不能自欺欺人. 实干兴邦,空谈误国. -------------------------------------------------- ...

  5. 手机wifi密码的保存位置

    subjects:  adj. 受制于...的, 被统治的; n. 主题,学科, 国民 the subjects had to kneel down before the king. kneel -& ...

  6. 3563: DZY Loves Chinese - BZOJ

    Description神校XJ之学霸兮,Dzy皇考曰JC.摄提贞于孟陬兮,惟庚寅Dzy以降.纷Dzy既有此内美兮,又重之以修能.遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上有N座祭 ...

  7. BZOJ 3569 DZY Loves Chinese II

    Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...

  8. BZOJ 3563 DZY Loves Chinese

    Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...

  9. html.ex.day02

    1.同一个目录内页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

随机推荐

  1. UOJ #35 后缀排序 哈希做法

    题面 http://uoj.ac/problem/35 题解 后缀数组当然可以 这里用哈希做 首先排序的问题在哪里 在于比较两个后缀的复杂度是O(length)的 但是我们可以通过找LCP来优化比较 ...

  2. 1-20StringBuffer简介

    StringBuffer是一个字符串缓冲区,如果需要频繁的对字符串进行拼接时,建议使用StringBuffer. 工作原理 StringBuffer的底层是char数组,如果没有明确设定,则系统会默认 ...

  3. Spring-bean(零)

    内容提要:红为1,黄2,绿3 -----配置形式:基于xml文件的方式:基于注解的方式 -----Bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法),Facto ...

  4. re正则表达式讲解—初步认识

    # f = open(r"C:\Users\LENOVO\Desktop\模特.txt",'r') # 1.常规提取文档内容方法 # contacts = [] # for i i ...

  5. Android Studio3.0 Error:Execution failed for task ':app:javaPreCompileDebug' 错误

    Error:Execution failed for task ':app:javaPreCompileDebug'. > Annotation processors must be expli ...

  6. IOS数组

    /*******************************************************************************************NSArray ...

  7. centos系统iptables使用帮助

    #如果只是想屏蔽IP的话“开放指定的端口”可以直接跳过.#屏蔽单个IP的命令是iptables -I INPUT -s 123.45.6.7 -j DROP#封整个段即从123.0.0.1到123.2 ...

  8. Sql Server数据库对象访问权限控制

    以下内容主要针对database层面的数据访问权限(比如select, insert, update, delete, execute…) 1.直接给user权限GRANT EXECUTE TO [u ...

  9. phpstorm 格式化代码

    MAC 安装phpcs.phpcbf composer global require 'squizlabs/php_codesniffer=*' Changed current directory t ...

  10. liunx+mysql数据库管理

    源码安装 查询是否安装:  rpm -aq |grep mysql 1.下载yum 源            wget 'https://dev.mysql.com/get/mysql57-commu ...