猴子大战(高斯消元+特殊性质)

题意简述:不好说。

吐槽:当年候选队只有1/3的人做出来,可这题是蓝题。

SOL:不难给出朴素的状压dp。枚举每一位的取反,(1变成0,0变成1)就可以得到一个新的状态,但这些状态的顺序都是乱的,所以不能用dp解决,只能使用高斯消元解方程。总共有 (2^n) 个状态,即有 (2^n) 个方程,所以复杂度是 ((2^n)^3) 的。可以得到40分的好成绩。这个办法似乎已经没有优化的空间了,于是想是否有一些特殊的性质。整体考虑不好考虑时,考虑按位考虑。如果当前手牌只有 (i) ,那么它杀穿的概率为 (f[i]) 。那么 (f[i]=sum_{j eq i}frac{f[i+j]*p[i][j]}{n-1}) 。但 (f[i+j]) 怎么算呢?经过第一种暴力的打表发现,(f[i+j]=f[i]+f[j]) 。可以感性理解一下,每一位杀穿的概率似乎与另一位无关(可以想想为什么会有关呢)。于是方程就可以转化为 (f[i]=sum_{j eq i}frac{(f[i]+f[j])*p[i][j]}{n-1}) ,然后就可以愉快的高斯消元了。

原文地址:https://www.cnblogs.com/currytrey/p/15394560.html