ARC067 简要题解
ARC067 简要题解
A
对于每一个数质因数分解即可
B
发现不会走回头路, 所以从左往右走是最优的
看每一段是一步步挪更优还是瞬移更优
C
很容易想到 \(f[i][j]\) 代表已经分了组内人数 \(\leq i\) 的组, 共分了 \(j\) 个人的方案数
然后不好转移, 所以设 \(g[i * j][j]\) 为共有 \(i * j\) 个不同的人, 要分为人数相等的 \(j\) 组的方案数
有
\[g[i * j][j] = \frac{g[i * (j - 1)][j-1]*\binom{ij}{i}}{j}\\
\]
至于为什么要除掉一个 \(j\) 是因为组之间没有区别
\(f\) 的转移挺简单的就不用说了
D
考虑从左往右扫统计答案
设已经扫了前 \(1 - i\) 个店, 当前右端点在 \(i\) , 左端点为 \(j\) 的最优答案是 \(ans[j]\)
考虑对于每一张券维护
发现每次就是加进来一个最大的然后更新前面某一段没有他优的点
所以可以用单调栈维护
发现每一次单调栈加入弹出都是对一段区间的值加减
差分维护即可