[省选联考 2025] 追忆 题解

[省选联考 2025] 追忆 题解

小丑来改省选题了

首先发现问题不弱于求导出子图,复杂度大概就是 \(O(\dfrac{n^2}{w})\) 的样子

先说一个大常熟做法,胜在简单

考虑特殊性质

容易发现性质C看起来就非常可做,去掉了 \(l,r\) 的限制使得我们拥有足够的复杂度去做后面的东西

考虑对操作分块:先bitset预处理出一个点可达的所有点,把修改全当成赋值,对于块内的查询直接暴力查看是否有贡献就好了,然后将所有修改位置置为 \(0\),在dag 上跑一遍 dp 即可得到答案,复杂度显然是 \(O(\dfrac{n^2}{w}+n\sqrt n)\)

我们看看这个做法还能不能拿到更高的分

后面的东西里面都有区间,尝试对 \(a\) 进行分块,重构的时候每次求出连续的一段 \(a\) 对当前点的贡献

如果暴力做这个东西的话会比刚才多个块数(要跑块数遍)复杂度是 \(O((n+m)\dfrac{n}{B1}\dfrac{q}{B2}+q(\dfrac{n}{B1}+B1+B2)))\)

因为 \(n,m,q\) 同阶,把柿子写好看点就得到了 \(O((\dfrac{n^3}{B1B2}+\dfrac{n^2}{B1}+nB1+nB2)))\)

容易发现只要取 \(B1=B2=n^\frac{2}{3}\) 即可获得 \(O(\dfrac{n^2}{w}+n^\frac{5}{3})\) 的复杂度,算出来应该是可以通过的,不过可能需要卡常,期望得分 \(88\sim 100\)

但是我场上以为这个东西是 \(O(n^2)\) 的,没仔细分析复杂度,没有调块长,甚至改题的时候也没想到这个东西,还强行上了个值域分块和bitset

接下来是一个真的需要值域分块和bitset的做法,复杂度是 \(O(\dfrac{n^2}{w}+n\sqrt{n})\),并且是在线做法,薄纱上面做法

首先肯定依然需要对 \(a\) 进行分块,这回我们换个方向来做,从 D 性质入手

D 性质意味着我们不再有数组 \(b\) 了,只剩下 \(a\),要求的就是询问的 \(a\) 区间与可达点的交集中最大的 \(a\) 权值

那么现在我们可以使用 bitset 存每一块中的点所对应的标号,之后从大到小遍历每一块,如果和可达点有交,证明答案一定在这一段内

暴力去做的话复杂度是 \(O(\dfrac{n^2}{w}\sqrt{n})\) 发现复杂度瓶颈在于遍历所有整块,而且一个事实是修改是 \(O(1)\)

那么我们发现可以维护各个块的后缀和,之后在整块上二分即可做到 \(O(\sqrt n)\) 修改 \(O(\dfrac{n^2}{w}\log\sqrt{n})\) 回答询问

这时候已经可以通过性质 D 了,考虑扩展

发现同时有 \(a\)\(b\) 的时候可以对 \(a\)\(b\) 同时分块,然后同时维护上面那个东西(合法的点的集合),因为是排列,所以 bitset 是可以差分的,查询和可达点的交就是 \(O(\dfrac{n^2}{w})\) 的,后面半部分在 \(b\) 上做就好了

为了通过所有数据,我们还需要去掉那个 \(\log n\),发现在后缀和的形式中交一定是单调的

初始认为答案在第0块,手写bitset,遍历每一位,如果当前下一块的这一位的 ull 和这个和上面的合法的点有交,说明答案一定在下一块或者更后面的位置,指针加,否则的话说明bitset前面的点不会有其他贡献

这样的话查询只需要遍历整个bitset,复杂度 \(O(\dfrac{n^2}{w}+n\sqrt{n})\)

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

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

相关文章

GNSS测量实习

实 习 报 告学院:建筑工程与空间信息学院 专业:地理信息科学 实习性质:校内实习 实习单位:建筑工程与空间信息学院 指导教师:冯建迪目录 一、实习的性质和目的要求 二、实习的任务和内容 三、静态测量 3.1 静态测量简介 3.2作业流程 3.3注意事项 3.4 GPS 控制网设计…

花束搭配

提取公式:Ai+Aj>Bi+Bj 变形得:Ai-Bi+Aj-Bj>0#include<bits/stdc++.h> using namespace std; #define int long long const int N = 1e6 + 10; int n, m, k, cnt, ans; string s;void solve() {cin >> n;vector<int> a(n), b(n), c(n);for (int i = 0…

题解:P11955 「ZHQOI R1」覆盖

https://www.luogu.com.cn/article/20vbz4zk对于一颗线段树,它的结构如图所示。一定是先有红色,再有绿色,再有蓝色,再有紫色。如果靠前的颜色没有那么靠后的颜色不可能出现。我们先考虑上一层(黑色)都已经处理完,新的一层会有什么影响,即已知 \(f_{2^j}\) 求 \(f_{2^j+…

sir.net,一个类似itdog/pingpe/chinaz的网络质量检测/监视工具

相信不少站长或主机爱好者都使用过itdog/pingpe/chinaz网络质量和ip质量检测这类工具,这其中最重要最常用的就是ping值检测工具了,如果你熟悉或接确过这方面的应用,那么现在,不防尝鲜下 sir.net(中文名:站长先生) ,它将不失作为你一个更有趣更稳定的选择。 1)类似google.…

原来不是喜欢原子化css,只不过是喜欢tailwind

前言 写css的时候,经常有某个控件只需要些许css样式,但是写行内样式又有优先级问题,从而需要为其单独定义一个class,然而某个控件只是用来布局,没有特定含义,连名称都不好命名。 因此,原子化css应运而生,早期的bootstrap,以及一些组件库中都有使用。 那时叫做工具类,…

c语言分支与循环基础

实验任务一 问题1:生成一个1到100的随机整数 问题2:使输出的整数宽度为4位,不足时在前面补0 问题3:循环生成五个1到100的随机整数,与固定前缀组合后输出类似学员编号的内容实验任务2 问题一:在一次购买流程结束后,清除本次购买的总价,下次运行能重新计算。去掉的话,总…

梯度方差的概念

梯度方差的概念 内容 在深度学习中,梯度方差(Gradient Variance) 是一个关键概念,它直接影响模型的训练稳定性和收敛速度。以下用通俗的语言和实际例子解释它的含义、作用及影响。1. 什么是梯度方差?定义: 梯度方差表示 不同批次数据计算出的梯度之间的波动程度。 如果每…

解决方案 | 如何安全可靠地更改win10的C盘用户名

有的朋友可能最开始由于不知道使用中文名在编程中的各种bug,从而将自己的系统用户名设置成了中文名或者各种奇怪符号的名字,导致在英文编程的时候或者使用英文软件的时候可能出错。为了解决这个问题,网上的文章写得又臭又长,生怕别人看懂学到了技术。本文目的:实现原用户名…