首页 > TAG信息列表 > CF1061C

CF1061C Multiplicity

Lisa 先想一个朴素的 dp \(f_{i,j}\)表示前 \(i\) 个把 \(i\) 放在子序列 \(j\) 位的方案数,显然我们的 \(j\) 不是 \(a_i\)的因数的时候 会直接从上一位继承下来 是不是有 背包那味了 对于每一个 \(a_i\) 我们分解质因子再转移 #include<iostream> #include<cstdio> #include<algo

CF1061C Multiplicity(dp)

洛谷传送门 解题思路 最朴素的dp为:dp[i][j]前i个数选j个方案数。 \(O(n^2)\) 的时空复杂度很显然会炸,所以需要优化。 先考虑空间,第一维可以滚动数组滚掉,因为选的第j个数与上一个数是什么没关系。 再考虑时间上,尝试对于每个a[i],只枚举符合条件的j,即枚举其因数(根号复杂度)。 注意因

CF1061C Multiplicity

好题笔记 CF1061C Multiplicity 这是一道用滚动数组来去优化时间和空间的dp题目,题面就不加以解释了,直接上正解。 对于这种取数的dp其实状态都是套路,第x个成为子集里第k个数与否,可以就dp[x][k]=dp[x-1][k-1]+1,如果不可以就dp[x][k]=dp[x-1][k-1],这个转移方程好去想出来,但是