牛客第十场 F.Popping Balloons
第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献
在线段树上每次删除一个点会影响到 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的更多相关文章
- 牛客多校第十场 F Popping Balloons 线段树维护稀疏矩阵
题意: 给定一个稀疏矩阵,里面有若干个气球,让你横着开三枪,竖着开三枪,问最多能打爆多少气球,要求相同方向,相邻两枪必须间隔r. 题解: 横向记录每列有多少个气球,分别在哪行上. 然后把这个数据改造成 ...
- 牛客第十场Rikka with Prefix Sum
由于其中的2操作非常多,我们就需要将其快速的更改,就会用到组合数的东西 其实自己手写一下就可以发现对于一个点增加的值在经过不断地前缀和累加过程中对于一点的贡献满足杨辉三角 所以我们就需要记录一下其中的 ...
- Wood Processing牛客第十场 斜率优化DP
卧槽我感觉写的是对的,但是就是样例都过不了...留坑 #include<iostream> #include<stdio.h> #include<string.h> ...
- 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
链接:https://ac.nowcoder.com/acm/contest/392/F来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K ...
- 牛客网练习赛23 F 托米的游戏
链接:https://www.nowcoder.com/acm/contest/156/F 来源:牛客网 题目描述 题目背景编不下去了 托米有一棵有根树 T, 树根为1,每轮他会在剩下的子树中等概率一 ...
- 牛客小白赛1 F题三视图
链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...
- 牛客小白月赛3 F 异或【区间交集】
链接:https://www.nowcoder.com/acm/contest/87/F 来源:牛客网 题目描述 Cwbc想测试一下他的加密协议,以便防止其他人偷看他给XHRlyb的信. Cwbc提出 ...
- 牛客网 牛客小白月赛1 F.三视图
F.三视图 链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 这个题自己想一下三维的,正视图和左视图中y轴为行数,x轴和z轴是列数,因为 ...
- 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板
链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...
随机推荐
- AnroidStudio gradle版本和android插件的版本依赖
- 【转载】恢复误删文件--DOS命令应用实例(一)
<电脑爱好者>报转载第一辑第二篇之恢复误删文件--DOS命令应用实例(一) 恢复误删文件--DOS命令应用实例(一) 上期我们讲述了 ...
- Java学习笔记-基础语法
Java基础包含关键字,标识符,注释,常量和变量,运算符 关键字 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 Java的关键字 用于定义数据类型的关键 ...
- 再jsp页面中使用kindeditor 的方法
1.创建一个动态web工程 2.建立一个static库文件夹把CSS,JS样式放进去 3. 复制HTML代码到jsp页面中 4.在相对路径中加上一个"static/" 5.运行截图
- Java代码是怎么运行的
前言.... 作为一名 Java 程序员,你应该知道,Java 代码有很多种不同的运行方式.比如说可以在开发工具中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至可以在网页中运行.当然 ...
- vue首页组件切换
结构如下 代码如下: <template> <div id="page"> <div style="width: 100%" cl ...
- AndroidStudio布局编辑器强制刷新布局界面
用AndroidStudio布局编辑器编辑界面的时候,在selector里调整按钮的颜色,调整后的颜色经常无法实时显示在布局编辑器里,每次都重新运行程序查看界面又非常麻烦和低效,可以用以下方法解决: ...
- DISCO Presents Discovery Channel Code Contest 2020 Qual Task E. Majority of Balls
Not able to solve this problem during the contest (virtual participation). The first observation is ...
- 如何使用RedisTemplate访问Redis数据结构之字符串操作
Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...
- VMWare虚拟机15.X局域网网络配置(修改网卡)
最近在搞几台虚拟机来学习分布式和大数据的相关技术,首先先要把虚拟机搞起来,搞起虚拟机第一步先安装系统,接着配置网络 vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).N ...