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

在线段树上每次删除一个点会影响到 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. 【计算机视觉】双目测距(六)--三维重建及UI显示

    原文: http://blog.csdn.NET/chenyusiyuan/article/details/5970799 在获取到视差数据后,利用 OpenCV 的 reProjectImageTo ...

  2. C/C++.字符串分割

    1.ZC:只测试使用了 自己改编的函数SplitStr_ZZ(...),其它的 未测试 #include <string> #include <vector> #include ...

  3. layer.msg弹窗后没有自动关闭——问题解决

    layer.msg弹窗后没有自动关闭,里面也没有配time: -1 layer.msg("信息体", {time: -1}); 后面发现是jquer和layer版本不对,之前自己用 ...

  4. 【持续更新】一个简洁、易用的美赛 LaTeX 模板: easyMCM

    目录 1 当前美赛模板通行情况的概述 2 EasyMCM 宏包说明 2.1 与 mcmthesis 的关系之说明 2.2 easymcm宏包的简介 2.3 美赛模板下载地址 3 README 摘录 3 ...

  5. C++11 thread condition_variable mutex 综合使用

    #include <mutex> #include <condition_variable> #include <chrono> #include <thre ...

  6. [转帖]XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件

    XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件 https://www.cnblogs.com/smartsmile/p/7665979.html xcopy dirA dir ...

  7. zabbix监控mysql主从同步和延迟

    https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...

  8. windows 清理 cbs.log 文件

    请参考以下步骤 1.win+r输入 services.msc进入服务,找到并双击Windows Modules Installer点击停止, 2.然后就可以手动删除 3.按一的步骤开启TrustedI ...

  9. mysql语句(二)

    --MySQL 连接的使用 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表 ...

  10. (十八)JDBC获取存储过程和主键

    目录 获取数据库自动生成的主键: JDBC调用存储过程 获取数据库自动生成的主键: update 更新操作以后,如果需要用到结果集,可以通过 PreparedStatement.getResultSe ...