• 数学专题测试3


    A. young

      大概的意思是,将原图根据最高的二进制位分成两个部分,那么只要在这两个部分之间连一条边,统计这条边的方案数就可以统计贡献。

      为了辅助转移,可以考虑枚举最小边的权值,之后就可以根据最高位的不同继续分成两个集合,于是可以递归下去求解。

      然而并没有改。

    B. Simple

      难点大概在于第一步。

      如果这个数中出现了循环节,那么一定不合法。如果没有循环节,那么将所有排列枚举出来,发现只有字典序最小的那一个数是合法的。于是所有没有循环节的数循环同构之后都必然会对答案贡献1。

      于是只要求没有循环节的数的个数,发现这个东西和约数有很大关系,推一推可以发现是莫比乌斯,于是直接容斥就好了。

      然后再推一推式子,发现要求的是$i*mu(i)$的前缀和,卷上$id$就变成了$e$,于是直接杜教筛就好了。

    C. 小 H 爱染色

      似乎没有想象中那么难。

      推式子,发现只需要$ans(n)=sumlimits_{i=0}^{n-m} f(i)*inom{n-i}{m}^{2}$,将相邻两项做差就是答案。

      由于组合数是个$m$次多项式,$f$是个m次多项式,所以ans是个$3*m+1$次多项式,所以只要求出前$3m+2$项就可以暴力插值出第N项。

      所以直接暴力NTT优化插值求出$f$然后暴力NTT求出$ans$就可以愉快的TLE了,然后去卡一年常就可以AC了。

      然而这似乎并不是正解。由于我们只需要求两项的值,所我们并不需要$ans$这个多项式,实际上只要在n处的取值正确就可以了。

      于是可以构造另一个多项式,使得这个多项式与$ans$在n处的取值相同即可,并且这个多项式的前$3m+2$项易于求出。

      所以可以省掉一次NTT。

      并不是很理解。

  • 相关阅读:
    mac+chrome 最常用快捷键
    关于<form> autocomplete 属性
    MAC vim修改hosts文件
    git 使用详解(3)—— 最基本命令 + .gitignore 文件
    git 使用详解(2)——安装+配置+获取帮助
    vue动态生成组件
    slot插槽
    provide 和 inject高阶使用
    js正则验证表达式验证
    angular常用命令整理
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12178260.html
Copyright © 2020-2023  润新知