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\) 开得很大。
                    
                
                
            
        
浙公网安备 33010602011771号