luoguP3415 祭坛
https://www.luogu.org/problemnew/show/P3415
考虑二分结界层数,将 n 个点按 x 大小依次加入答案,一行一行的做,用树状数组维护当前这一行中[0, x - 1] 包含祭坛大于 mid 的且 [x + 1, n] 中包含的祭坛也大于 mid 的坐标,再计算出这一行有几个地方可以作为中心,简单容斥(可能还不算容斥?)一下就可以了
有一个坑就是当节点层数是 0 的时候输出两行 0
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
struct ele {
int x, y;
bool operator < (const ele A) const {return x < A.x || (x == A.x && y < A.y);}
}d[N];
int sum[N], f[N], y[N], allsum[N];
int n, len;
inline int lowbit(int x) {return x & -x;}
inline void add(int x, int y) {for(int i = x; i <= n; i += lowbit(i)) f[i] += y;}
inline int query(int x) {int ans = 0; for(int i = x; i; i -= lowbit(i)) ans += f[i]; return ans;}
int solve(int mid) {
memset(sum, 0, sizeof(sum));
memset(f, 0, sizeof(f));
int now = 1, ans = 0;
for(int i = 0; i <= n; i++) {
len = 0;
while(now <= n && d[now].x == i) {
int t = d[now++].y;
y[++len] = t;
}
if(len >= (mid << 1)) {
int l = y[mid] + 1, r = y[len - mid + 1] - 1;
for(int j = mid + 1; j <= len - mid; j++) ans -= (sum[y[j]] >= mid && (allsum[y[j]] - sum[y[j]] >= mid));
ans += (query(r) - query(l - 1));
}
for(int j = 1; j <= len; j++) {
int t = y[j];
if(sum[t] >= mid && (allsum[t] - sum[t] == mid)) add(t, -1);
sum[t]++;
if(sum[t] == mid && (allsum[t] - sum[t] >= mid)) add(t, 1);
}
}
return ans;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++) scanf("%d %d", &d[i].x, &d[i].y);
sort(d + 1, d + n + 1);
for(int i = 1; i <= n; i++) allsum[d[i].y]++;
int l = 1, r = n / 4;
while(l < r) {
int mid = (l + r + 1) >> 1;
if(solve(mid)) l = mid;
else r = mid - 1;
}
if(solve(l) == 0) printf("0\n0\n");
else printf("%d\n%d\n", l, solve(l));
return 0;
}
luoguP3415 祭坛的更多相关文章
- BZOJ2934 : [Poi1999]祭坛问题
对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用at ...
- luogu 3415 祭坛
题目大意: 在平面上,有 n 个水晶柱,每个水晶柱可以用一个点表示 如果 4 个水晶柱依次相连可以构成一个四边形,满足其两条对角线分别平行于 x 轴和 y 轴,并且对角线的交点位于四边形内部(不包括边 ...
- Introduction to neural network —— 该“神经网络” 下拉“祭坛”
Introduction to neural network 不能自欺欺人. 实干兴邦,空谈误国. -------------------------------------------------- ...
- luogu3415 祭坛
先二分答案转化成判定问题. 考虑拿一根扫描线从 \(x=0\) 扫到 \(x=n\),每次移动扫描线更新每个位置它上面的点数和下面的点数,这样可以确定在当前的扫描线上哪些位置对于 \(y\) 轴方向是 ...
- 手机wifi密码的保存位置
subjects: adj. 受制于...的, 被统治的; n. 主题,学科, 国民 the subjects had to kneel down before the king. kneel -& ...
- 3563: DZY Loves Chinese - BZOJ
Description神校XJ之学霸兮,Dzy皇考曰JC.摄提贞于孟陬兮,惟庚寅Dzy以降.纷Dzy既有此内美兮,又重之以修能.遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上有N座祭 ...
- BZOJ 3569 DZY Loves Chinese II
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...
- BZOJ 3563 DZY Loves Chinese
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...
- html.ex.day02
1.同一个目录内页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
随机推荐
- HIVE UDF
基本函数 SHOW FUNCTIONS; DESCRIBE FUNCTION <function_name>; 日期函数 返回值类型 名称 描述 string from_unixtime( ...
- MYCAT实战之分片迁移
实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ...
- C++虚函数与纯虚函数用法与区别(转载)
1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class) ...
- CRM客户关系管理系统知识点总结
一.项目需求(使用PrecessOn) 二.models.py from django.db import models from django.contrib.auth.models import ...
- java基础之io流总结三:字节流读写
字节流读写适用于任何文件,包括图片,视频等. 基本字节流 一次读一个字节和一次读一个字节数组 FileInputStream fis = new FileInputStream(path); //一次 ...
- Android 建立AIDL的步骤
建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下: (1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件.该文件的语法类似于Java代码,但会稍有不同.详 ...
- PHP Curl请求Https接口
在请求http的时候只需要 file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Positi ...
- ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程
最近,经理让我搭建一个服务器,我从网上找了一篇比较好的教程,按教程一步步执行感觉挺顺利,所以准备整理一下这个教程.尊重原版注明出处:http://news.2ky.cn/Linux/ubuntu-12 ...
- 在ubuntu12.04上安装6款顶级漂亮的BURG主题
BURG 基本上是一个基于GRUB的Linux引导装载程序.BURG格有一个高度可配置的菜单系统,可选择文本和图形模式.简而言之,BURG可广泛定制,有良好免费的BURG主题.选择自己最喜欢的,下面我 ...
- 766. Toeplitz Matrix斜对角矩阵
[抄题]: A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now ...