Luogu P3863 序列 题解 [ 紫 ] [ 分块 ] [ 扫描线 ]

news/2025/10/1 2:22:58/文章来源:https://www.cnblogs.com/zhr0102/p/19122005

序列:思路比较典的扫描线题。

一个经典 trick:对于涉及历史版本操作的题,新增代表“时间”的一个维度,刻画在 \(\bm{k + 1}\) 维空间上考虑。

对于此题,发现是查询序列历史版本大于等于 \(v\) 的值的个数,于是可以把它刻画在一个二维平面上,\(x\) 轴代表序列的维度,\(y\) 轴代表时间轴。操作可以转化为:

  • 修改操作:将 \(x\in[l, r], y \in [t, q]\) 的矩形加上 \(x\)
  • 查询操作:查询 \(x = p, y\in[0, t]\)单列矩形中大于等于 \(v\) 的数的个数。

注意到查询单列矩形的条件很特殊,于是我们可以用一个数据结构维护 \(y\) 轴,然后顺过去扫 \(x\) 轴。

发现即使是一维平面上,带修且查询单个区间中 \(\ge v\) 的个数就只能用分块做了,于是分块维护即可。时间复杂度 \(O(q\sqrt q)\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi = pair<int, int>;
const int N = 100005, M = 1005;
int n, q;
ll a[N], oria[N], ans[N];
struct Operation{ll x, y;
};
vector<Operation> Lines[N], Queries[N];
struct Decompose{int B, Btot, L[M], R[M], bl[N];ll val[N], Tag[M];void rebuild(int p){for(int i = L[p]; i <= R[p]; i++){a[i] = a[i] + Tag[p];val[i] = a[i];}Tag[p] = 0;sort(val + L[p], val + R[p] + 1);}void build(){B = sqrt(q + 1);Btot = (q + 1 + B - 1) / B;for(int i = 1; i <= Btot; i++){L[i] = (i - 1) * B + 1;R[i] = min(q + 1, i * B);for(int j = L[i]; j <= R[i]; j++)bl[j] = i;rebuild(i);}}void update(int l, int r, ll v){if(bl[l] == bl[r]){for(int i = l; i <= r; i++) a[i] += v;rebuild(bl[l]);return;}for(int i = l; i <= R[bl[l]]; i++) a[i] += v;rebuild(bl[l]);for(int i = L[bl[r]]; i <= r; i++) a[i] += v;rebuild(bl[r]);for(int i = bl[l] + 1; i < bl[r]; i++) Tag[i] += v;}int query(int l, int r, ll v){int res = 0;if(bl[l] == bl[r]){for(int i = l; i <= r; i++)res += (a[i] + Tag[bl[l]] >= v);return res;}for(int i = l; i <= R[bl[l]]; i++)res += (a[i] + Tag[bl[l]] >= v);for(int i = L[bl[r]]; i <= r; i++)res += (a[i] + Tag[bl[r]] >= v);for(int i = bl[l] + 1; i < bl[r]; i++){if(val[R[i]] + Tag[i] < v) continue;res += R[i] - (lower_bound(val + L[i], val + R[i] + 1, v - Tag[i]) - val) + 1;}return res;}
}dc;
int main()
{// freopen("P3863.in", "r", stdin);// freopen("P3863.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> q;for(int i = 1; i <= n; i++)cin >> oria[i];dc.build();memset(ans, -1, sizeof(ans));for(int i = 1; i <= q; i++){ll op, x, y, z;cin >> op;if(op == 1){cin >> x >> y >> z;Lines[x].push_back({z, i + 1});Lines[y + 1].push_back({-z, i + 1});}else{cin >> x >> y;Queries[x].push_back({y, i + 1});}}for(int i = 1; i <= n; i++){dc.update(1, q + 1, -oria[i - 1]);dc.update(1, q + 1, oria[i]);for(auto ln : Lines[i])dc.update(ln.y, q + 1, ln.x);for(auto qs : Queries[i])ans[qs.y] = dc.query(1, qs.y - 1, qs.x);}for(int i = 2; i <= q + 1; i++)if(ans[i] != -1)cout << ans[i] << "\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站开发角色分类wordpress第三方主题下载

下头Nginx 以前配置服务器难道配置完nginx默认访问80端口进入不应该是欢迎来到nginx吗&#xff0c;nono变了 nginx变了 现在默认访问就是Welcome to CentOS 你的配置没有问题 只要你能访问 就行 直接改成你的项目地址就ok了

网站怎么做成手机版网站适配怎么做

https://www.cnblogs.com/jinxing-tc/p/9568832.html

建设部网站进不去公司做网站流程流程

管道方式是Transformers库中高度集成的极简使用方式。使用这种方式来处理NLP任务&#xff0c;只需要编写几行代码就能实现。通过本例的练习可以使读者对Transformers库的使用快速上手。 1 在管道方式中指定NLP任务 Transfomers库的管道方式使用起来非常简单&#xff0c;核心步…

湖州网站建设服务wordpress高亮代码大前端

今天博客的内容就系统的讨论一下Masonry对FSP的影响&#xff0c;以及如何更好的使用Masonry。如果你对iOS开发足够熟悉的话&#xff0c;那么对Masonry框架应该不陌生。简单的说&#xff0c;Masonry的诞生让AutoLayout的使用更为优雅&#xff0c;让控件的布局更为方便。使用辩证…

【半导体器件 | 笔记】pn结二极管

目录基本公式回顾能带模型载流子连续性方程(运输方程)电学方程电荷控制方程导入术语,记号与定性解静电特性内建电势\(V_{bi}\)耗尽近似外加偏压下的突变结I-V特性:理想二极管方程定性载流子分布理想I-V电荷控制方程…

2019河北省建设厅检测员报名网站网络系统脆弱性的不安全因素

Android图形显示系统 Android图形显示系统是Android比较重要的一个子系统&#xff0c;和很多其他子系统的关联紧密。 Android图形系统比较复杂&#xff0c;这里我们从整体上理一遍&#xff0c;细节留待后期再去深入。Android图形系统主要包括以下几个方面&#xff1a; - 渲染…

自己做网站创业wordpress木马乐主题

1 /*2 Dijkstra算法用优先队列来实现&#xff0c;实现了每一条边最多遍历一次。 要知道&#xff0c;我们从队列头部找到的都是到3 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其他点&#xff08;被更新的节点可以在队列中4 &#xff0c;也可以是…

251001

251001这是一个真理不存在的世界,所有人都相信一个不存在的东西,矛盾缠绕扭曲着活在当下的每个人,一层一层又一层,洋葱的最后一层也是洋葱。镜子的碎片藏在路人的鞋底,我不是喜欢鞋子,我是想要镜子,慢慢扣出来再…

Day2:Linux文件目录移到拷贝与vim编辑器使用指南

​ 一、文件与目录管理命令 1. ls —— 列出目录内容 功能:显示文件和目录的名称、大小、权限等信息。 语法:ls [选项] [文件/目录] 选项说明-l长格式显示(详细信息)-a显示所有文件(包括隐藏文件)-h人性化显示文…

专业做全景图的网站平台重要的网站建设

点击蓝字关注我们作者丨土豆知乎来源丨https://zhuanlan.zhihu.com/p/158857128本文已获授权&#xff0c;不得二次转载前言在深度学习中&#xff0c;我们总是不可避免会碰到各种各样的损失函数。通常来说&#xff0c;损失函数都是高维的函数&#xff0c;难以可视化为人类可以分…

关于宠物的网站网页设计国家认可的赚钱游戏

闲来无聊&#xff0c;话说saltstack webui halite还一直没玩&#xff0c;于是就凑今天体验一把&#xff1b;很多尝鲜的同学都说halite的功能较少&#xff0c;而其也正符合其说明console&#xff0c;不过其UI我还是蛮喜欢的&#xff0c;个人觉得比较清新简洁、挺好下面就来安装体…

【半导体物理 | 笔记】第八章 半导体表面与MIS结构

表面态晶体自由表面使其周期场在表面处发生中断,引起附加能级表面态:电子的分布概率主要集中在x=0处,即电子被局限在表面附近表面电场效应 理想条件:金属板与半导体间功函数差为零;在绝缘层内没有任何电荷且绝缘层…

seo网站建设接单wordpress 自定义模版

Golang&#xff08;又称Go&#xff09;是一种快速、可靠且高效的编程语言&#xff0c;由Google开发并在开源社区广泛应用。Golang的设计目标是通过简洁的语法和强大的并发模型提供高效的开发体验。在本文中&#xff0c;我们将指导您如何安装和配置Golang&#xff0c;以便开始您…

【半导体物理 | 笔记】第七章 金属和半导体的接触

金半接触及其能级图 功函数 金属功函数$$W_m=E_0-E_{Fm}$$ 一个起始能量为费米能级的电子由金属内部逸出到真空所需的最小能量 半导体功函数$$W_s=E_0-E_{Fs}$$ 电子亲合能$$\chi=E_0-E_c$$ 接触电势差$$V_{ms}$$ 内建…

现在个人网站怎么备案女生做新媒体运营是不是很累

之前写过一篇文章 python使用uiautomator2操作雷电模拟器_uiautomator2 雷电模拟器-CSDN博客 上面这篇文章用的是雷电模拟器4&#xff0c;雷电模拟器4.0.78&#xff0c;android版本7.1.2。 今天有空&#xff0c;再使用雷电模拟器9&#xff0c;android版本9来测试一下 uiauto…

自助建个人网站哪个好安卓wordpress客户端

不知道大家有没有看过吴京题为<<一切不怕从零开始>>的演讲。我曾经刷微博的时候看到过,印象和触动最深的是他的那句"我走过很多的路,换过很多的方向,不敢说有什么成就,到今天我觉得唯一能够让我拿出来炫耀的可能就是,我不害怕从头开始"。这样的话,对年龄…

【半导体物理 | 笔记】第四章 半导体的导电性

一、载流子的漂移运动和迁移率 欧姆定律 电导率 \(\sigma =\dfrac{1}{\rho}\) 欧姆定律微分形式 \(J=\sigma \mathscr{E}\) 漂移速度和迁移率 迁移率 \(\mu=\left|\dfrac{\bar{v}_\mathrm d}{\mathscr E}\right|\) \(J…

【半导体物理 | 笔记】第五章 非平衡载流子

一、非平衡载流子的注入与复合 非平衡载流子:比平衡状态多出来的部分载流子,通常指非平衡少数载流子 \(\Delta n=\Delta p\) 附加电导率 \(\Delta \sigma=\Delta pq(\mu_\mathrm n+\mu_\mathrm p)\) 产生率:单位时间…

seo网站外包公司王烨是哪个小说的主角

Android Studio中使用命令行gradle查看签名信息&#xff1a; 使用 Gradle 插件生成签名报告 打开 Android Studio 的 Terminal。 运行以下命令&#xff1a;./gradlew signingReport 将生成一个签名报告&#xff0c;其中包含 MD5、SHA1 和 SHA-256 的信息。 如果失败&#xf…

【AHK】暗黑3助手,加强版鼠标宏

暗黑3助手主要功能:键盘按键连点、鼠标连点、血岩赌博助手、铁匠分解助手、魔盒重铸助手、魔盒升级助手、工匠附魔助手、冲层赌图助手等等...... 下载地址( 密码 gseg ):https://wwpc.lanzoub.com/b0138y3upg功能…