• CSPS模拟 57


      rank4大众rank

      

      T1 天空龙

        让他自由翱翔吧

      T2 巨神兵

        对于n=10的测试点本可以打出非常优秀的分层状压

        但是没有打出来,因为对拓扑图理解不够深刻,纠结于指回的边,实际上只关注伸出的边就可以

        正解则是跟分层一点关系都没有

        记录两层的状态一定要gg的,所以只记录一层

        那么状态定义就不可避免地成了”保证状态是个拓扑图“

        然后内部一片混沌,于是又得容斥。

        假设现在我们有一个完全正确的状态$st$,也就是所有符合条件的状态都被计算一次

        考虑如何转移到更庞大的一个状态$state$

        由于$dp$是枚举所有状态和所有转移,所以我们可以认为$st -> state$的过程会经过所有可能的路径

        将这些路径分类来达到容斥的目的

        假设$size[state^st]=sz$

        那么根据最后一次加入点的个数可以分成:

        $1 C_{sz}^1 条$

        $2 C_{sz}^2 条$

        ${sz} C_{sz}^{sz}条$

        这种组合数的东西,我们十分套路地使用奇加偶减就行了

        具体来说就是转移的时候,如果加入奇数个点则系数为1,否则系数为-1

      T3

        枚举最大公约数,则$ans=sum limits_d=1^n sum limits_{1<=a,b<=frac{n}{d}} [gcd(a,b)==1]$

        而$n/d$只有$sqrt[2]{n}$种取值,所以先上分块

        随后的东西我不会证复杂度了

        $sol1$

        假设a<b枚举$a<sqrt[2]{frac{n}{d}}$,变成$sumlimits_{a=1}^{frac{n}{d}} [gcd(a,frac{n}{d*a})==1]$

        设$k=frac{n}{d}$,上莫比乌斯反演$sumlimits_{a=1}^k sumlimits_{t|a} u(t)$

        $sumlimits_{t=1}^k u(t) sumlimits_{x=1}^{x*t<=k} 1    -phi(x*t)$

        然后直接就是调和级数,时间复杂度$nlogn$, 空间复杂度根号

        可以水到80

        $sol2$

        考虑函数$f(x)=sumlimits_{1<=a,b<=k} [a*b<=k][gcd(a,b)==1]$

        发现$f(x)$比$f(x-1)$多出的部分就是$sum[a*b==k][gcd(a,b)==1]$

        也就是把k拆成两部分,不含有相同的质因子

        $delta=2^{d(k)}$

        可以线筛,时间复杂度$n$,空间复杂度$n$

        如果你能结合$sol1,sol2$,同时计算出最优复杂度分界线$n^{frac{2}{3}}$,可以直接AC

        $sol3$

        还是考虑那个函数,这次上容斥(又是容斥,算上明天的题都3道容斥题了)

        设$g(i)=sumlimits_{1<=a,b<=k} [a*b<=k]$

        枚举ab的gcd t,则重复的部分就是k中除去$t^2$之后分成两个互质的数的方案数

        这不就是f自己

        $f(i)=g(i)-sumlimits_{t>1} f(frac{k}{t^2})$

        递归调用自己,复杂度不会证,听说是$n^{frac{2}{3}}$

        然后又要玄学计算最优复杂度分界线又是$n^{frac{2}{3}}$,结合sol1可以用更快的速度AC

        

      恰完饭再写,饿。

  • 相关阅读:
    three.js 制作一个三维的推箱子游戏
    three.js 郭先生制作太阳系
    three.js 制作魔方
    three.js 欧拉角和四元数
    mysql
    重装系统后需要安装的软件
    python3.7 安装PyQt5
    Java读取文件
    linux 环境jdk安装
    linux 修改用户字符集
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11619500.html
Copyright © 2020-2023  润新知