首页 > 其他分享 >CF1712题解(E,F)

CF1712题解(E,F)

时间:2022-08-14 02:11:09浏览次数:75  
标签:约数 子树内 链链 dep 题解 CF1712 lcm 所属

E

题意是让你求满足 \(lcm(i,j,k)\geq i+j+k\) 的三元组个数。
我们通常都有一个直观感觉,lcm应该是各数之积级别的,换句话说, 不满足 \(lcm(i,j,k)\geq i+j+k\) 的三元组个数应该不太多,考虑用总的个数减去不合法的个数。
\(lcm(i,j,k)< i+j+k\) ,因为k是三元组中最大的数,所以 \(lcm(i,j,k)< i+j+k< k+k+k< 3k\)。又由于lcm一定是k的倍数,所以lcm的值只可能是k或者2*k。
1.lcm=k
i,j只要是k的约数即可,对于一组询问,答案为

\[\sum_{i=l}^{r}\binom{i在[l,r]中的约数}{2} \]

初始给每个位置赋初值为约数个数,对询问按照左端点排序,枚举左端点,每枚举一个就把当前枚举值的倍数的约数个数-1,那么询问 \([l,r]\) 就是区间的 \(\binom{a_{i}}{2}\)的和,线段树即可。
这部分 \(O(w\log w)\),其中w是值域=200000。

2.lcm=2k
设k的唯一分解中2的幂次是x,那么lcm=2k相当于要求i和j其中有一个的唯一分解中2的幂次是x+1。
枚举2k的所有约数作为i,如果2k中唯一分解中2的幂次是x+1,那么j只要满足在i和k之间且是2k约数即可。否则j的唯一分解中2的幂次必须是x+1。对于这两种情况都不难统计固定k之后,对于每一个合法的i,有多少个j符合我们设置的条件。这里要枚举1-2w的所有数的约数并存下来,还要对每个数的约数求出作为i的贡献并存下来,时空均是1个log的。
在之前的讨论中没有考虑l的限制,加入l的限制的话,用前缀和差分即可。
和前一种情况类似,对询问按照左端点排序,枚举左端点,每枚举一个左端点t就对t的倍数去掉t作为i对答案的贡献。这里具体实现可以把所有数放进优先队列(关键字为大于t的最小因数),t增加时查询当前堆顶是否有关键字等于t的元素,把t的贡献去除,再把关键字改为下一个约数后放回。快速查询下一个约数可以用链表。

总复杂度 \(O(w\log^{2} w)\)。

F

原题等价于建一个虚点向所有叶子连边,边权为 \(\frac{w}{2}\)。求直径。
在加上这些边之后,两点的最短距离只有两种可能,即原树上的简单路径或者在两点的子树中找深度最小的叶子,先到达叶子,然后走新加的边到另一个叶子,再到终点。
考虑点分,先处理过重心的所有路径。
直径可以写成这个样子:

\[ \max_{i,j}(\min(dep(i)+dep(j),dep(i子树内深度最小的叶子)+dep(j子树内深度最小的叶子)-(dep(i)+dep(j))+w)) \]

如果类似于树链剖分一样,选择拥有最浅的叶子的儿子为重儿子,树将被剖成若干条链,其中对于同一条链上所有节点,“子树内深度最小的叶子”相同。那么,对于两个点,如果他们所属的链已经确定, \(\min(dep(i)+dep(j),dep(i子树内深度最小的叶子)+dep(j子树内深度最小的叶子)-(dep(i)+dep(j))+w)\) 就只与 \(dep(i)+dep(j)\) 有关。而且前者随之递增,后者随之递减。而 \(dep(i)+dep(j)\) 的取值范围是 \([dep(i所属链链顶)+dep(j所属链链顶),dep(i所属链链底)+dep(j所属链链底)]\) 如果取不到折点(即 \(\frac{dep(i子树内深度最小的叶子)+dep(j子树内深度最小的叶子)+w}{2}\)),答案就是 \(dep(i所属链链顶)+dep(j所属链链顶)\) ,否则是\(\frac{dep(i所属链链底)+dep(j所属链链底)+w}{2}\)。判断条件是

\[dep(i所属链链顶)+dep(j所属链链顶)\leq \frac{dep(i所属链链底)+dep(j所属链链底)+w}{2} \]

这等价于

\[(dep(i所属链链顶)-\frac{dep(i所属链链底)}{2})+(dep(j所属链链顶)-\frac{dep(j所属链链底)}{2})\leq \frac{w}{2} \]

把所有剖后的链按照 \(dep(链顶)-\frac{dep(链底)}{2}\) 排序,那么对于每一条链,一个前缀与它的贡献就是\(dep(i所属链链顶)+dep(j所属链链顶)\),转化为查找前缀最小值。剩下的和它产生的贡献是 \(\frac{dep(i子树内深度最小的叶子)+dep(j子树内深度最小的叶子)+w}{2}\) ,与前者类似转化为查找后缀最小值。
复杂度:点分之后树剖,每条链按照特征值排序之后维护前后缀最小值,再枚举每条链,求出对答案的贡献,复杂度 \(qn\log n\)。

标签:约数,子树内,链链,dep,题解,CF1712,lcm,所属
From: https://www.cnblogs.com/thedreammaker/p/16584691.html

相关文章

  • LeetCode Pow(x, n)算法题解 All In One
    LeetCodePow(x,n)算法题解AllInOnejs/ts实现Pow(x,n)50.Pow(x,n)https://leetcode.cn/problems/powx-n/https://www.youtube.com/watch?v=ZTACajQOb2Er......
  • 2022“杭电杯”中国大学生算法设计超级联赛(8) 题解
    A.Theramore考虑只对长度为3的子串进行操作,发现偶数位置的字符不会出现在奇数位置,奇数位置的字符不会出现在偶数位置。对奇偶位置字符进行排序即可。#include<bits/std......
  • 表达式 题解
    零、写在前面\(\texttt{洛谷の题目链接}\)与\(\texttt{Topsの题目链接}\)以及\(\texttt{Hydroの题目链接}\)这道题是\(\texttt{CSP-2020}\)普及组的第三题,但个......
  • 【题解】做题记录(2022.8)
    (之前的就暂时不补了就从以后的开始记)8.12CF1606CBanknotes题目分析:显然第\(i\)种货币可以用来组成\(a_{i+1}-a_{i}\)位,为了使得\(k\)最小,显然从低到高位依次......
  • IOI 2022 题解 & 锐评
    IOI2022D1T1Fish题目大意:有一个\(N\timesN\)的网格,其中的\(M\)个位置有垒球,第\(i\)个垒球的位置为\((x_i,y_i)\),重量为\(w_i\)。你可以为每一列\(c\)选择......
  • VMware ESXi 6.7 用户名密码正确,网页却无法登录问题解决
    生产环境服务器断电后,登陆VMwareESXi6.7网页管理平台,提示密码错误(密码是正确的),后面排查是由于VMwareESXi保护机制造成的这种现象,解决方法如下:1.直接在服务器上登陆VMw......