当前位置:网站首页>CF780G Andryusha and Nervous Barriers
CF780G Andryusha and Nervous Barriers
2022-07-30 13:40:00 【With a cool moon】
CF780G Andryusha and Nervous Barriers
考虑树套树.
One-dimensional maintenance interval column,Another dimension maintains the height of the ball on the column,Make sure the points are correct.
maintenance single point,区间查.
The situation when the scan line height is maintained to each board from large to small.
优化:The interval check is to judge that the minimum height of the interval ball can only pass through the baffle and end.
时间复杂度 O ( n log 2 n ) \mathcal O(n\log^2n) O(nlog2n).
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
#define ha putchar(' ')
#define he putchar('\n')
inline int read() {
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x * f;
}
inline void write(int x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9)
write(x / 10);
putchar(x % 10 + 48);
}
const int _ = 1e5 + 10, mod = 1e9 + 7;
int h, w, n, N;
ll ans[_ << 2];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q[_];
struct abc {
int u, l, r, s;
bool operator < (const abc &t) const {
return u > t.u;
}
} k[_];
void build(int o, int l, int r) {
if (l == r) {
q[l].push({
h + 1, 1});
ans[o] = h + 1;
return;
}
int mid = (l + r) >> 1;
build(o << 1, l, mid), build(o << 1 | 1, mid + 1, r);
ans[o] = min(ans[o << 1], ans[o << 1 | 1]);
}
void upd(int o, int l, int r, int pos, int p, int h) {
if (l == r) {
q[l].push({
h, p});
ans[o] = min(ans[o], (ll)h);
return;
}
int mid = (l + r) >> 1;
if (pos <= mid) upd(o << 1, l, mid, pos, p, h);
else upd(o << 1 | 1, mid + 1, r, pos, p, h);
ans[o] = min(ans[o << 1], ans[o << 1 | 1]);
}
int qry(int o, int l, int r, int L, int R, int h, int s) {
if (ans[o] > h + s) return 0;
if (l == r) {
int res = 0;
while (!q[l].empty() && q[l].top().first <= h + s) {
res = (res + q[l].top().second) % mod;
q[l].pop();
}
ans[o] = q[l].empty() ? 1e10 + 7 : q[l].top().first;
return res;
}
int mid = (l + r) >> 1, res = 0;
if (L <= mid) res = qry(o << 1, l, mid, L, R, h, s);
if (R > mid) res = (res + qry(o << 1 | 1, mid + 1, r, L, R, h, s)) % mod;
ans[o] = min(ans[o << 1], ans[o << 1 | 1]);
return res;
}
signed main() {
h = read(), w = read(), n = read();
for (int i = 1; i <= n; ++i) k[i].u = read(), k[i].l = read(), k[i].r = read(), k[i].s = read();
N = w;
build(1, 1, w);
sort(k + 1, k + n + 1);
for (int i = 1; i <= n; ++i) {
int t = qry(1, 1, w, k[i].l, k[i].r, k[i].u, k[i].s);
N = (N + t) % mod;
if (k[i].l == 1) upd(1, 1, w, k[i].r + 1, (t << 1) % mod, k[i].u);
else if (k[i].r == w) upd(1, 1, w, k[i].l - 1, (t << 1) % mod, k[i].u);
else {
upd(1, 1, w, k[i].l - 1, t, k[i].u);
upd(1, 1, w, k[i].r + 1, t, k[i].u);
}
}
write(N), he;
return 0;
}
边栏推荐
- dolphinscheduler simple task definition and complex cross-node parameter transfer
- 第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用
- 剑指 Offer 05. 替换空格
- What are the hard-core upgrades and applications that cannot be missed in Greenplum 6.0?
- 666666
- PyQt5快速开发与实战 8.6 设置样式
- Xms Xmx PermSize MaxPermSize 区别
- jsArray array copy method performance test 2207300823
- 二手手机销量突破3亿部,与降价的iPhone夹击国产手机
- ES6 Set与Map是什么,如何使用
猜你喜欢

【自校正控制】自校正PID

The way of programmers' cultivation: do one's own responsibilities, be clear in reality - lead to the highest realm of pragmatism

腾讯称电竞人才缺口200万;华为鸿蒙3.0正式发布;乐视推行每周工作4天半?...丨黑马头条...

jsArray数组复制方法性能测试2207300040

shell script flow control statement

svg波浪动画js特效代码

【河北工业大学】考研初试复试资料分享

How to display an Excel table in the body of an email?

pytorch学习记录(六):循环神经网络 RNN & LSTM

Apache Log4j2漏洞
随机推荐
【VMware虚拟机安装mysql5.7教程】
MQTT网关读取西门子PLC数据传输到阿里云平台案例教程
Yilian: Activating the Value Potential of Data Elements and Unleashing the Innovation Dividend of SAS SSD
如何判断自己是否适合IT行业?方法很简单
C语言学习练习题:汉诺塔(函数与递归)
What are the hard-core upgrades and applications that cannot be missed in Greenplum 6.0?
strlen跟sizeof区别
PyQt5快速开发与实战 8.6 设置样式
[VMware virtual machine installation mysql5.7 tutorial]
There is a risk of water ingress in the battery pack tray and there is a potential safety hazard. 52,928 Tang DMs are urgently recalled
Lake storehouse which electricity (2) of the project: project using technology and version and the environment
TaskDispatcher源码解析
Self-tuning PID self-tuning control 】 【
(HR面试)最常见的面试问题和技巧性答复
R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(ylim、修改可视化图像y轴坐标轴数值范围)
666666
Learning notes - 7 weeks as data analyst "in the first week: data analysis of thinking"
R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(xlab、ylab、改变可视化图像的坐标轴标签内容)
for循环的3个表达式执行顺序
外包干了七年,废了。。。