模拟89 题解

A. 666

应当注意到一个结论:

带着一个剪贴板进行删除操作是没有意义的。

可以转化为粘贴之后删除。

所以直接跑spfa求最短路。

注意到答案不超过48,所以边权超过48的边可以忽略。

B. 1234567

显然用莫比乌斯函数容斥。

发现答案为$\sum \limits_{i=1} \mu(i)\frac{n}{i^2}$

然后发现只会线性求。

打个表发现这个东西也可以除法分块,$\frac{n}{i^2}$在$n=10^18$的范围内只有一百多万个不同的取值。

所以杜教筛莫比乌斯函数前缀和,套个平方意义下的除法分块就行了。

做这道题确实对杜教筛有了更多的一些理解。

因为$\lfloor \frac{n}{i*k} \rfloor=\lfloor \frac{\lfloor \frac{n}{i} \rfloor}{k}\rfloor$这个式子,杜教筛就很强。

C. 椎

很有意思的一道题。

考虑最暴力的做法做这道题(在不会平衡树的前提下)。

按$key$值排序,每次取出$rand$值最大的一个点,并递归左右子树。

两个点$a$,$b$的$lca$显然对应着区间$[a,b]$内$rand$值最大的点。

而对于每个点,维护它左侧的单调栈和右侧的单调栈,那么该点的深度对应着两个单调栈中元素个数的和。

猜你喜欢

转载自www.cnblogs.com/skyh/p/11749085.html