摘要:
运用到了 NOI2019 机器人那道题的技巧. 考虑对区间进行离散化,然后设当前枚举到的两个端点为 $[l,r]$. 先处理 $[l,r)$,会遇到 $\sum_{i=1}^{n} \binom{len}{i} \binom{k}{i}$ 这个式子. 这个式子可以直接 $O(1)$ 组合数算,但是我 阅读全文
摘要:
NOI2019 两道插值可还行. 一个数不可能向右移动到超过后缀最大值的位置,也不可能向前移到前缀最大值之前的位置. 那么就考虑基于最大值的分治(DP) 令 $f[l][r][x]$ 表示当前区间为 $[l,r]$ 最大值为 $x$ 的方案数. 然后转移的话枚举 $k$ 为最大值出现的位置(有多个的 阅读全文
摘要:
概率DP+记忆化搜索. 直接记忆化搜索感觉比较显然+简单. 直接设状态 $f[x][a][b][c]$ 表示还剩 $x$ 轮,当前牌的状态为 $(a,b,c)$ 还期望造成的伤害. 转移的话就是倒着转移:$f[x][a][b][c] \leftarrow f[x-1][.....]$. 然后边界的话 阅读全文
摘要:
有一个非常显然的 DP: $f_{i,j,0/1}$ 表示当前 $DP$ 到 $i$,选了 $j$ 个 A,当前位置选的是 A/B 是否可行. 状态数为 $O(n^2)$,转移为 $O(1)$,时间复杂度为 $O(n^2)$. 这个时候就要动用人类智慧:打表. 打表后发现当 $i,0/1$ 固定的时 阅读全文
摘要:
裸做的话设一个 $p[i][j]$ 表示两个堆分别抽走 $i,j$ 个的概率. 转移的话就枚举当前是第几个,然后再枚举左/右面由下向上第几个贡献. 不在模意义下做,开 double 打表发现无论怎样洗牌,一次函数还是一次函数,二次函数还是二次函数. 那么我们只需暴力维护出牌的前 3 项,然后后面的项 阅读全文