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\)不连通;

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

posted @ 2018-01-08 14:58  pbvrvnq  阅读(132)  评论(0编辑  收藏  举报