zoukankan      html  css  js  c++  java
  • 省选模拟75 题解

    A. 比特币

    考虑把第 $k$ 位为 $1$ 的问题放在模 $2^{k+1}$ 意义下考虑,这样问题就简单了。

    因为若干个循环的贡献被强制放在了同一段上考虑。

    然后随便弄个数据结构维护一下即可。

    B. 测试

    类似约数个数和一题,可以用类似的构造方法来展开 $d(i*j*k)$ 这个函数。

    对于每个质因子 $p^c$,目的是用 $c_1+c_2+...+c_k$ 凑出 $(c+1)$ 来然后乘在总的系数里面。

    对于 $k=2$ 的形式,可以直接枚举约数,然后用 $gcd=1$。

    对于 $k>2$ ,仍然是类似的,然后此时的要求是只有一个位置有值,其他位置均为 $1$。

    其实也就是说任意两者的 $gcd$ 均为 $1$。

    所以对于 $k=3$,有三个布尔表达式。

    直接用莫比乌斯反演展开这三个表达式。

    然后化一化式子可以得到一个 $(i,j),(j,k),(i,k)$ 分别相关的式子。

    然后到这里很神的做法是,把这种相关关系建图出来。

    然后三者两两相关,其实就是构成一个三元环,所以做一下三元环计数即可。

    C. 光图

    连通块个数的 $k$ 次方的组合含义其实就是选中 $k$ 个可重的代表点,这个玩意并不容易计数。

    考虑将 $x^k$ 通过第二类斯特林数展开为下降幂的形式,然后这个下降幂其实就是组合数乘阶乘。

    阶乘可以提到外面去,然后现在的组合含义 $x$ 选 $k$ ,可以按照顺序来进行 dp,是容易计数的。

    然后本题是一个连通块问题,首先处理出大小为 $i$ 的不同连通块个数。

    因为若干个连通块可以随意组成一个任意图,所以设一设指数生成函数可以得到这个数组。

    然后就可以得到一个暴力的 $dp$,因为有同层的转移的,这就需要分治做法,会多一个 $log$。

    一个很套路的优化办法是,先只考虑不同层的转移。然后因为并不需要具体区分在哪一层转移的,所以直接给最终值乘一个系数即可得到答案。

  • 相关阅读:
    Java 中节省 90% 时间的常用的工具类
    一文彻底弄懂cookie、session、token
    Java 中 this 和 super 的用法详解
    java对接c++发布的webservice接口,其中参数类型有base64Binary格式(无需将图片数据转化为c++中的结构体)
    mysql免安装版下载及安装教程
    selenium python 入门-元素定位
    软件测试白皮书-测试综合策略
    软件测试白皮书-正交试验设计方法
    软件测试白皮书-因果图
    软件测试白皮书-判定表法
  • 原文地址:https://www.cnblogs.com/skyh/p/12740970.html
Copyright © 2011-2022 走看看