专栏文章

题解:CF1031F Familiar Operations

CF1031F题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min6dlth
此快照首次捕获于
2025/12/01 21:18
3 个月前
此快照最后确认于
2025/12/01 21:18
3 个月前
查看原文
参考了官方题解。
x=Πpiαix=\Pi p_i^{\alpha_i},注意到因数个数只和可重集 {αi}\{\alpha_i\} 有关,所以只需要保留所有可重集 {αi}\{\alpha_i\} 不同的数即可,在 x106x\le 10^6 条件下共有 289289 个,记为 mm
容易想到先两两预处理出最短路,然后 O(1)O(1) 回答。但是在最短路过程中不一定只经过这 mm 个点,有可能终止在范围更大的点。
注意到直接两两跑最短路之后,每个答案都不超过 10,所以新加入的点的 αi<30\sum \alpha_i<30,这样的点有 2862928629 个,直接每个点为起点做一次最短路,meet in the middle 即可得到答案。
这样直接跑略多于时限,考虑已有正确做法,将其简化,看答案是否不变。容易发现很多点都是无效的,事实上只有因数个数 288\le 288αi22\sum \alpha_i \le 22 的点才有用,于是足以通过。
如果借助因数个数 288\le 288 (设其与 mm 同阶)的性质,可以写出一个 O(nlogm+m3+t)O(n\log m+m^3+t)O(nlogm+m2logm+tm)O(n\log m+m^2\log m+tm) 的 dp 做法,其中 n=106n=10^6,也足以通过本题。

评论

0 条评论,欢迎与作者交流。

正在加载评论...