因式分解
我看错题目了,所以有了这篇文章。
题目
给定一个多项式,将其因式分解。
多项式项数 \(n\le 10\),保证所有运算在 int 内。
解题报告
因式分解,暴力怎么做?暴力是不是:枚举,枚举,枚举 \(\cdots\) 然后拿原式查询?
但是 \(\operatorname O(V^n)\) 的复杂度不够优美。
考虑题目中给出的信息,可以得到一些比较好利用的限制(为了方便,将原式写成若干个 \((x+r_i)\) 的形式):
-
\(a_0=\prod_{i=1}^n\limits r_i\)
-
\(a_{n-1}=\sum_{i=1}^n\limits r_i\)
具体的,我们可以将 \(a_0\) 质因数拆分为 \(\prod p_i^{k_i}\) 的形式,那么每个 \(r_j\) 也可以表示成 \(\prod p_i^{k_{i,j}}\),并且 \(k_i=\sum_{j=1}^n\limits k_{i,j}\)。
那么总状态数就是将 \(\sum k\) 个数分为 \(n\) 组的方案数,并且有很多无用的状态可以丢掉。
-
按顺序枚举每一组,保证每一组的值递增。
-
剩下还有没有利用的 \(n-1\) 个信息,都可以利用,写一个估价函数,判断当前情况之后的每一项的最小值/最大值,从而达到剪枝的目的。
这只是个看错的题目所以自然没有代码啦!没错我就是嘴巴怪。
$$\texttt{Dirty Deeds Done Dirt Cheap}$$

浙公网安备 33010602011771号