[vp]ARC067

提交记录

\(A\) .分解质因数然后套约数个数公式
\(B\).sb贪心
\(C\).
良心计数dp.
\(f_{i,j}\)为用前\(j\)个人,分到了人数为\(i\)的组的方案。
转移式子:

\[f_{i,j}=f_{i-1,j}+\sum_{k=C}^{D} f_{i-1,j-ik} \times C_{n-(j-ik)}^{ki} \times G_{i,k} \]

其中\(G_{i,k}\)表示\(ik\)个人分\(k\)组,每组\(i\)个人的方案数。
这玩意枚举一个\(r\),然后算\(\sum_{ki-ri}^{i}\),最后除以\(k!\)就行了。
初值\(f_{A-1,0}=1\),\(Ans=f_{B,n}\)
看起来是\(O(n^3)\)的,但其实这个枚举\(k\)是个调和级数。所以是\(O(n^2ln_n)\)
\(D\).
妙妙ds
答案显然是一段区间\(l\)~\(r\)用每个票最优的烧烤店和减去\(l,r\)的路程
我们从\(n\)\(1\)枚举\(l\),统计\(tans_r\)为右端点的最优答案。
考虑每次\(l\)减少一位,答案的变化就是之前某个票移动到当前位。
那么就是当前点往右延伸找到第一个大于此点的位置\(p\)\(l\)~\(p\)的都可以用这张票代替。
这个可以单调栈,退栈和入栈要用到可以区间加的\(ds\),例如\(Bit\)
但其实我们可以直接用个差分数组,查的时候从前往后累加即可。
时间复杂度:\(O(n(n+m))\)

posted @ 2021-09-29 09:33  Isenthalpic  阅读(23)  评论(0编辑  收藏  举报