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

原文地址:https://www.cnblogs.com/LJC00118/p/9656893.html

时间: 2024-10-18 04:34:37

luoguP3415 祭坛的相关文章

BZOJ2934 : [Poi1999]祭坛问题

对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用atan2(y,x)算角度,改成算斜率,所以需要分$4$个方向讨论. $2.$对区间排序时,不要直接对结构体排序,而是对其指针排序. $3.$在计算某个祭坛时,除了它本身需要特别计算之外,其它祭坛可以直接看成没有缺口的矩形,可以减少$n$个事件. $4.$在计算的过程中,不断收缩左右边界,当左右边界重合

luogu 3415 祭坛

题目大意: Dgeak大陆可以看成一个用平面直角坐标系表示的巨大平面.在这个平面上,有 n 个Swaryea水晶柱,每个水晶柱可以用一个点表示. 如果 4 个水晶柱依次相连可以构成一个四边形,满足其两条对角线分别平行于 x 轴和 y 轴,并且对角线的交点位于四边形内部(不包括边界),那么这 4 个水晶柱就可以建立一个结界.其中,对角线的交点称作这个结界的中心. 例如下左图中,水晶柱 ABCD 可以建立一个结界,其中心为 O.   为了起到抵御Dar-dzo-nye的最佳效果,人们会把祭坛修建在最

人皇尺就喺祭坛之中,你哋若是睇到形似祭坛嘅嘢就立

人皇大殿漆黑匹,内中唔知有几年冇入过光线,充斥住一铺霉味,阴冷潮湿,其中重有一种古怪嘅刺鼻瀡.喺呢度,即便系修士嘅目光都睇唔见远处,鼆到纯粹匹.蓝烨早有准备从怀中拎出一盏油灯嚟,呢油灯睇落同普通嘅油灯冇咩有咩唔同,蓝烨汇入修为,油灯灯捻就畀点燃,连随一粒火球由油灯上冉冉升起,悬喺蓝烨头顶,将周围嘅一切全部照亮. http://www.dianyuan.com/people/782099 面嘅时候,心中齐齐一紧.呢度,遍地都系干尸骸骨.呢度好似曾经发生咗一场大,呢啲干尸骸骨们仲保留住死前嘅状态,佢

CCF 201609-5 祭坛

问题描述 试题编号: 201609-5 试题名称: 祭坛 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在遥远的Dgeak大陆,生活着一种叫做Dar-dzo-nye的怪物.每当这种怪物降临,人们必须整夜对抗怪物而不能安睡.为了乞求这种怪物不再降临,人们决定建造祭坛. Dgeak大陆可以看成一个用平面直角坐标系表示的巨大平面.在这个平面上,有 n 个Swaryea水晶柱,每个水晶柱可以用一个点表示. 如果 4 个水晶柱依次相连可以构成一个四边形,满足其两条对角线分别平行于

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

Introduction to neural network 不能自欺欺人. 实干兴邦,空谈误国. ----------------------------------------------------------------------------------------------------------------------------------------------- 题外话: Matlab的神经网络工具箱使得神经网络得到大力的推广,得到很多其它的人关注与研究使用. 然而,非常多

luogu3415 祭坛

先二分答案转化成判定问题. 考虑拿一根扫描线从 \(x=0\) 扫到 \(x=n\),每次移动扫描线更新每个位置它上面的点数和下面的点数,这样可以确定在当前的扫描线上哪些位置对于 \(y\) 轴方向是合法的.对于 \(x\) 轴方向合法的点应该处的范围可以直接算出来,树状数组维护. #include <algorithm> #include <iostream> #include <cstdio> #include <vector> using namesp

DNF NPK包名对照一览表

文章转载自:http://bbs.exrpg.com/thread-107917-1-1.html ┌ sprite.NPK                                                  登陆界面├ sprite_character.NPK                                        默认角色头像和角色轮廓├ sprite_character_common.NPK                               

先贤祠1

先贤祠 (le Panthéon)位于巴黎市中心塞纳河左岸的拉丁区,于1791年建成, 巴黎先贤祠 (20张) 是永久纪念法国历史名人的圣殿.它原是路易十五时代建成的圣·热内维耶瓦教堂,1791年被收归国有脱离宗教后,改为埋葬“伟人”的墓地.1814年到 1830年间,它又归还教会.先贤祠中的艺术 装饰非常美观,其穹顶上的大型壁画是名画家安托万·格罗特创作的.1830年“七月革命”之后,绘画的主题改变,先贤祠具有了“纯粹的爱国与民族”特性.先贤祠内安葬着伏尔泰.卢梭.维克多·雨果.爱弥尔·左拉.

BZOJ3569: DZY Loves Chinese II

Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上有N座祭坛,又有M条膴蠁边. 时而Dzy狂WA而怒发冲冠,神力外溢,遂有K条膴蠁边灰飞烟灭. 而后俟其日A50题则又令其复原.(可视为立即复原) 然若有祭坛无法相互到达,Dzy之神力便会大减,于是欲知其是否连通. Input 第一行N,M 接下来M行x,y:表示M条膴蠁边,依次编号 接下来一行Q 接