BZOJ十一月月赛

考场上做第一题做了(4)小时(T)飞了,结果发现被(GCD)卡了,只能再回来(看着题解)补题了;

(A)

(ans=frac{sum[r] - sum[l-1]}{r - l + 1}), 能够发现是个斜率模型,可以维护一个下凸壳,在凸壳上二分答案就好了;

(B)

设第j轮到了i号点时的概率(P_{ij}​);

[P_{i0} = frac{d_i}{2m}; ]

对于与(i)相连的点(u)

[P_{i1} = sum_u{frac{d_u}{2md_u}} = frac{d_i}{2m} ]

所以无论过了多少轮到这一点概率都是一样的

直接(O(n))计算答案即可;

(C)

[F_i = max(F_i, {sum_i} xor {sum_l} + sum_l) (0 <= l <= i) ]

分位考虑,发现当(sum_i​)的第j位为(1​)是,(l​)无论如何取这一位都是(1​)

反之只有(sum_l)第j位为(1)时才有贡献(1<<(j + 1)),否则无贡献;

这时可以贪心地预处理(dp[i])(sum[l])包含i状态下最小的(l),选取(1,0)的时候用(dp)贪心即可;

(D)

待补

(E)

直接写一个(gen)打表即可;

(F)

容易想到状压(DP),但要分(m)的奇偶性讨论;

(m)为奇数时,不需要考虑对坐的情况,可以设(dp(i,j,0/1,0/1)),表示当前考虑到第(i)位为状态(j)时第一位选或不选,当前这一位选或不选;

(m)为偶数时,发现当前及对面是只能取一个的,所以可以将这两个位置并在一起成为一个位置,这样转移就十分好想了,

(dp(i,j,0/2,0/2)),选到第(i)组状态为(j)以及第一组和当前组的状态;

转移都是枚举当前这一位选什么;

(G)

十分巧妙的网络流建模,因为数字各不相同能够发现可以取到(LIS_a + LIS_b)这个上界;

所以问题转化为删去一些数使得(a或b)(LIS)改变;

对于(dp)值为1的向源点连边,(dp)值为(LIS)的向汇点连边,这样问题就是割去图中的一些点使得(S)(T)不连通;

经典问题,拆点最小割即可;

原文地址:https://www.cnblogs.com/pbvrvnq/p/8242720.html