题解:
显然可以得到一个 $O(2^n∗n)$ 的状压 dp 做法,记录每个球是否还未被移除,然后按照最优策 略期望移除白球数。
事实上,有很多重复状态,也就是剩下的球的颜色序列相同时,结果是一样的。
考虑将状态记成剩下的颜色序列,长度较小时,直接用数组存,较大时用 map。
状态数不难得到一个上界 $\sum_{i=1}^n min{2^i,C_n^i}$ 。(事实上,最大值为$\sum_{i=1}^{n+1} Fib(i)$ ,但是这不 noip)
代码:
1 |
|
I see you!
显然可以得到一个 $O(2^n∗n)$ 的状压 dp 做法,记录每个球是否还未被移除,然后按照最优策 略期望移除白球数。
事实上,有很多重复状态,也就是剩下的球的颜色序列相同时,结果是一样的。
考虑将状态记成剩下的颜色序列,长度较小时,直接用数组存,较大时用 map。
状态数不难得到一个上界 $\sum_{i=1}^n min{2^i,C_n^i}$ 。(事实上,最大值为$\sum_{i=1}^{n+1} Fib(i)$ ,但是这不 noip)
1 | #include<bits/stdc++.h> |