题解:此题是最大值问题,而且又有"最优"这样的字眼,考虑用dp求解,
考虑最优策略,无需关注每一次每个选择具体是什么样的,
因为是最优,所以每轮游戏中, 不同的被ban掉的集合所对应的可能的a值集合应该不存在交集, 否则就不符合最优的性质了。
设dp[i][j]表示还能进行i轮游戏,还能允许j只熊喝醉的情况下的最大的R值,
根据上面的性质,可以通过枚举这一轮喝醉的熊的数量得到dp方程:
dp[i][j]=sigma(C(n+j-p,k)*dp[i-1][j-k]) (k=0...j)
而边界状态是:dp[0][i]=1 (i=0....p).
这样,我们就得到了一种复杂度为O(p^2*q)的做法,
但是p=130,q=2*10^6,这样的做法显然还需要改进。
于是考虑dp方程的优化,考虑构建矩阵,
按照预处理出的组合数,构造出p*p的矩阵,
这样就可以通过矩阵乘法实现dp[i]到dp[i+1]的转移&#x