26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路

G. Skibidus and Capping

扫描线 数论

合法数对个数,显然扫描线

对于一个质数 p p p那么 l c m ( p , q ) lcm(p,q) lcm(p,q)为半质数,则要求, q q q要么是一个不等于 p p p的质数,这维护前缀质数个数以及每个值的出现次数即可。

要么是一个半质数且是 p p p的倍数,这去枚举 p p p的倍数太慢了,考虑一个数组直接维护每个质数的倍数里半质数的数量。更新就是枚举到一个半质数 v = p q v=pq v=pq时,给 p , q p,q p,q的这个值更新,计算量很小

对于一个半质数 v = p q v=pq v=pq, l c m ( x , v ) lcm(x,v) lcm(x,v)是半质数,那么 x x x可以是 p , q , p q p,q,pq p,q,pq。对于一个半质数 v = p 2 v=p^2 v=p2, x x x可以是 p , p 2 p,p^2 p,p2。这可以通过维护元素出现次数计算。

F. Coprime Subsequences

因子反演 子序列计数

子序列实际上这里就可以看成子集。可以不管原始的顺序,转化到值域上做。

g c d gcd gcd恰等于某个值不好算,可以计算 g c d gcd gcd是 x x x的倍数的答案 g ( x ) g(x) g(x)。枚举 x x x,计算出 x x x的所有倍数的个数,可以从这些倍数里任选元素组成非空集合,个数就是 2 c n t − 1 2^{cnt}-1 2cnt−1。

然后用 g ( x ) g(x) g(x)计算 g c d = x gcd=x gcd=x的答案 f ( x ) f(x) f(x),可以枚举 x x x的所有倍数(不包含 x x x),从 g ( x ) g(x) g(x)里减去这些 f ( k x ) f(kx) f(kx),剩下的就是 f ( x ) f(x) f(x)了。这要求计算 f ( x ) f(x) f(x)时 f ( k x ) f(kx) f(kx)都算好了,需要从大到小递推。

当然这和莫比乌斯反演也是等价的,但是本题复杂度支持我们直接调和级数枚举的递推,这样就可以了。

D. Board Game

树套set 优化最短路

到了一个点 x , y x,y x,y之后,可以通过所有 a < = x , b < = y a<=x,b<=y a<=x,b<=y的点,到 c , d c,d c,d。问最少用多少次操作,这相当于边权全是 1 1 1的图的最短路。

每个点都和 a < = x , b < = y a<=x,b<=y a<=x,b<=y的所有点有连边,这样边太多,不能直接跑最短路。注意到这是边权全都相同,可以转化成 b f s bfs bfs,每个点只有第一次到达才是最短距离,后面不会更新。所以每个点只应该入队一次,这样复杂度就有保证了。

那么问题是如何实现这一点?一个经典 t r i c k trick trick是,用数据结构在开始保存所有点,然后每次要入队时,从数据结构种取出 a < = x , b < = y a<=x,b<=y a<=x,b<=y的所有点,入队。这样每个点被取出之后就没了,只能被入队一次就实现了。

这里的难点是,每次是一个二维查询,并且我们是最短路,相当于在线查询,不能离线,需要一个支持在线二维查询的数据结构。考虑树套树,一个维度用树状数组/线段树,一个维度,我们只要每次能取出 b < = y b<=y b<=y的所有元素即可, s e t set set就可以。

树套树复杂度是 O ( n log ⁡ 2 n ) O(n\log ^2 n) O(nlog2n)

相关推荐
延凡科技11 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
CV-Climber12 小时前
检索技术的实际应用
人工智能·算法
hhzz12 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_13 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
TsingtaoAI13 小时前
3D高斯泼溅技术发展及其在具身智能领域的应用综述
人工智能·算法·ai·具身智能·高斯泼溅
atunet13 小时前
关于图算法中的连通分量检测与最小割问题7
算法
心运软件14 小时前
银行客户流失预测(Python 完整实战)
算法
邪神与厨二病14 小时前
牛客周赛 Round 153
python·算法
qizayaoshuap16 小时前
# ❌ 井字棋 — 鸿蒙ArkTS Minimax AI算法与博弈系统设计
人工智能·算法·华为·harmonyos
皓月斯语17 小时前
B3842 [GESP202306 三级] 春游 题解
数据结构·c++·算法·题解