2018/3/23

T1 T2 又是一个神的不行的题。。。。这两天怎么全是神题啊

T1 young

  考虑按照现在m位是0还是1分成s,t两个集合,设f[n][m]为有n个点,点权在 0~1<<m 之内最小生成树的期望边权和,设g[s][t][m]为用0~1<<m 中的边将s,t集合连在一起的边的期望和

  那么最终的答案就是f[n][m]

  f[n][m]=C(n,s)*(2^(n-s)*(m-1)*f[s][m-1] + 2^(s*(m-1))*f[n-s][m-1] + g[s][t][m-1] + 2^(n+1)*(m-1))

  然后g可以这么转移出来,设p[s][t][m][k]为最小的边大于等于k的时候的方案数,那么g[s][t][m]=p[s][t][m][k](1<=k<(1<<m-1))

  然后p的话也是类似f,就是在分出s0,s1,t0,t1,然后如果四个都存在的话就是直接分别递归处理然后乘起来,如果只有s0,t0的话就是递归处理s0,t0,因为剩下的没有办法构成最小值,那么他们的点权就可以随便选(这个很容易被忘掉),

  有几个很好的减枝就是强制n<m, 然后求p的时候(k<=(1<<m)) 就 return

T2 simple

  这个题就是考虑如果一个的长度为n的数循环节小于n那么他就一定不可能是答案,然后如果一个数的循环节大于n,那么他循环构成的n个数字中,只有字典序最小的能贡献,然后我们通过mu容斥一下,就能推出来一个O(n)的式子,然后用杜教筛优化就好了

  说的这么简单主要是不想打公式


T3 mate

  这个题的主要难点就是模数不是素数,然后我们就是可以质因数分解,然后用一个堆来维护一下每一个因数的次数,以及全局的积就好了(能这么弄主要是因为每次式子的变化只有++,--,然后这么弄就比较快了)。

  也可以用CRT,但是觉得没有这么弄简单

posted @ 2018-03-24 12:25  Nawox  阅读(97)  评论(0编辑  收藏  举报