zoukankan      html  css  js  c++  java
  • 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,但是觉得没有这么弄简单

  • 相关阅读:
    剑指47 礼物的最大价值
    剑指46 把数字转化成字符串
    剑指41:数据流中的中位数
    剑指39 数组中出现次数超过半数的数
    centos 7关闭与启用防火墙,开放端口,常用命令介绍
    用docker swarm搭建docker集群
    centos 7离线安装docker, 离线安装docker-compose
    centos 7离线安装harbor
    mysql-8安装教程(windows 64位)
    centos 7离线安装中文版GitLab
  • 原文地址:https://www.cnblogs.com/FOXYY/p/8638414.html
Copyright © 2011-2022 走看看