CF 杂题乱做

CF1335E2 Three Blocks Palindrome (hard version)

枚举左段最后一个数,确定右段第一个数(对每种数开一个 vector,直接二分多一个 \(n\log n\)),中段用前缀和找出数量最多的那种数。时间复杂度 \(O(n\max\{a\})\)

CF515C Drazil and Factorial

重点在于将一个数 \(x\) 的阶乘分解成若干个较小数的阶乘。此题数据较小可以直接打表,这里讲一下拓展到任意正整数的做法。

考虑 \(x!\) 的质因数分解,最大质因子 \(p\) 的阶乘是一定要存在的,剩下 \(\frac{x!}{p!}\) 继续质因数分解重复这个过程。最终可以唯一分解成若干个质数的阶乘。

CF1646E Power Board

第一行中只存在 \(1\),且 \(1\) 不会在后面的行中出现。

对于 \(2\sim n\) 开头的任意两行,除了两数都是某个数的幂次外不会有交,因为同一行中不同质因子的数量比例相同。

枚举底数 \(x\),设 \(k\) 为其最大指数满足 \(x^k\leq n\)。显然答案只跟 \(k\) 有关,为 \(i=1\sim k\)\(j=1\sim m\)\(k\times m\) 个乘积中不同数的数量。

考虑容斥,若干个 \(i\) 的交为它们的公倍数。而乘积最大只到 \(\min\{i\}\times m\),所以相同数的数量为 \(\left\lfloor\frac{\min\{i\}\times m}{\operatorname{lcm}\{i\}}\right\rfloor\)

\(k\) 最大只有 \(\lfloor\log_2n\rfloor\),容斥一次 \(O(2^k\times k)\),不算 \(\operatorname{lcm}\) 总时间复杂度 \(O(n\log n)\)

直接暴力枚举 \(j\) 标记是 \(O(m\log n+n)\) 的,要加强可以把 \(m\) 开得很大。

posted @ 2025-05-10 21:50  Sumering  阅读(15)  评论(0)    收藏  举报