BZOJ十一月月赛
考场上做第一题做了\(4\)小时\(T\)飞了,结果发现被\(GCD\)卡了,只能再回来(看着题解)补题了;
\(A\)
\(ans=\frac{sum[r] - sum[l-1]}{r - l + 1}\), 能够发现是个斜率模型,可以维护一个下凸壳,在凸壳上二分答案就好了;
\(B\)
设第j轮到了i号点时的概率\(P_{ij}\);
对于与\(i\)相连的点\(u\)
所以无论过了多少轮到这一点概率都是一样的
直接\(O(n)\)计算答案即可;
\(C\)
分位考虑,发现当\(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\)不连通;
经典问题,拆点最小割即可;