第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献

在线段树上每次删除一个点会影响到 X   X-R   X-2*R  3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来

#include<bits/stdc++.h>
using namespace std;
const int MAXN = ;
int num[MAXN];
int number[MAXN];
struct Seg_Tre {
int l, r;
int w;
} tree[MAXN << ];
inline void push_up(int x) {
tree[x].w = max(tree[x << ].w, tree[(x << ) | ].w);
}
inline void build(int x, int ll, int rr) {
tree[x].l = ll, tree[x].r = rr;
if (tree[x].l == tree[x].r) {
tree[x].w = number[ll];
return;
}
int m = (ll + rr) >> ;
build(x << , ll, m);
build((x << | ), m + , rr);
push_up(x);
}
inline void change_point(int x, int aim, int add) {
if (tree[x].l == tree[x].r) {
tree[x].w += add;
return;
}
int m = (tree[x].l + tree[x].r) >> ;
if (aim <= m) {
change_point(x << , aim, add);
} else {
change_point((x << ) | , aim, add);
}
push_up(x);
}
inline int ask_interval(int x, int ll, int rr) {
if (tree[x].l > rr || tree[x].r < ll)
return -;
if (tree[x].l >= ll && tree[x].r <= rr) {
return tree[x].w;
}
int now = ;
int m = (tree[x].l + tree[x].r) >> ;
if (ll <= m) {
now = max(now, ask_interval(x << , ll, m));
}
if (rr > m) {
now = max(now, ask_interval((x << ) | , m + , rr));
}
return now;
}
vector<int> G[MAXN];
int main() { int n, r;
int x, y;
scanf("%d %d", &n, &r);
for (int i = ; i <= n; i++) {
scanf("%d %d", &x, &y);
G[x].push_back(y);
num[y]++;
}
for (int i = ; i <= ; i++) {
for (int j = ; j <= ; j++) {
if (i + j * r <= ) {
number[i] += num[i + j * r];
}
}
}
build(, , );
int ansnow = ;
for (int i = ; i <= ; i++) {
int now = ;
for (int j = ; j <= ; j++) {
int u = i + j * r;
if (u > )
break;
for (int v : G[u]) {
now++;
for (int k = ; k <= ; k++)
if (v - k * r >= )
change_point(, v - k * r, -);
}
}
ansnow = max(ansnow, now + ask_interval(,,));
for (int j = ; j <= ; j++) {
int u = i + j * r;
if (u > )
break;
for (int v : G[u]) {
now++;
for (int k = ; k <= ; k++)
if (v - k * r >= )
change_point(, v - k * r, );
}
}
}
printf("%d\n", ansnow);
return ;
}

牛客第十场 F.Popping Balloons的更多相关文章

  1. 牛客多校第十场 F Popping Balloons 线段树维护稀疏矩阵

    题意: 给定一个稀疏矩阵,里面有若干个气球,让你横着开三枪,竖着开三枪,问最多能打爆多少气球,要求相同方向,相邻两枪必须间隔r. 题解: 横向记录每列有多少个气球,分别在哪行上. 然后把这个数据改造成 ...

  2. 牛客第十场Rikka with Prefix Sum

    由于其中的2操作非常多,我们就需要将其快速的更改,就会用到组合数的东西 其实自己手写一下就可以发现对于一个点增加的值在经过不断地前缀和累加过程中对于一点的贡献满足杨辉三角 所以我们就需要记录一下其中的 ...

  3. Wood Processing牛客第十场 斜率优化DP

    卧槽我感觉写的是对的,但是就是样例都过不了...留坑 #include<iostream> #include<stdio.h> #include<string.h> ...

  4. 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)

    链接:https://ac.nowcoder.com/acm/contest/392/F来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K ...

  5. 牛客网练习赛23 F 托米的游戏

    链接:https://www.nowcoder.com/acm/contest/156/F 来源:牛客网 题目描述 题目背景编不下去了 托米有一棵有根树 T, 树根为1,每轮他会在剩下的子树中等概率一 ...

  6. 牛客小白赛1 F题三视图

    链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...

  7. 牛客小白月赛3 F 异或【区间交集】

    链接:https://www.nowcoder.com/acm/contest/87/F 来源:牛客网 题目描述 Cwbc想测试一下他的加密协议,以便防止其他人偷看他给XHRlyb的信. Cwbc提出 ...

  8. 牛客网 牛客小白月赛1 F.三视图

    F.三视图   链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网     这个题自己想一下三维的,正视图和左视图中y轴为行数,x轴和z轴是列数,因为 ...

  9. 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板

    链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...

随机推荐

  1. DRF-路由

    路由Routers 对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST framework提供 ...

  2. OpenCV.20190628

    1.OpenCV提取ORB特征并匹配 - 简书.html(https://www.jianshu.com/p/420f8211d1cb) OpenCV提取ORB特征并匹配 - 简书.html(http ...

  3. 【log4j】的学习和理解 + 打印所有 SQL

    log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...

  4. docker入门1--简介、安装

      一. Docker是什么,能做什么,好处和坏处都在哪里? Docker是一个开源的应用容器引擎,用Go语言写成. Docker最主要的作用,就是将程序执行所需要的环境变量与开发的程序代码进行打包处 ...

  5. SpreadJS:一款高度类似Excel的开发工具,功能涵盖Excel的 95% 以上

    Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面.出色的计算性能.数据分析和图表,已经成为数据统计领域不可或缺的软件之一. 基于Excel对数据处理与分析的卓越表现,把Excel的功能 ...

  6. 使用pycharm开发web——django2.1.5(一)入坑尝试第一步,基本搭建

    首先,接触python的人应该都会用pip 来安装需要的包吧(------>>>>)默认 在运行中使用python -m django --version来检查自己的djang ...

  7. 复合模式MVC

    这里也只说一下简单的原理. Model:模型实现处理数据的切逻辑. View:视图呈现模型的数据和状态. Control:解读视图对模型的操作. 视图和模型之间使用观察者模式,只要模型的状态改变视图立 ...

  8. Simple Library Management System HDU - 1497(图书管理系统)

    Problem Description After AC all the hardest problems in the world , the ACboy 8006 now has nothing ...

  9. Guide 哥:有哪些程序员受用一生的好习惯?

    本文来自 Guide 哥开源的 Github 仓库 programmer-advancement:https://github.com/Snailclimb/programmer-advancemen ...

  10. 牛客 72C 小H和游戏 (动态点分治)

    大意: 给定树, 每个点初始权值0, 每次询问给出$x$, $x$权值+1, 求距离$x$不超过2的权值和. 这题数据范围过大, 动态点分治卡不过去, 考虑其他做法 考虑每次只加范围$1$, c[0] ...