zoukankan      html  css  js  c++  java
  • 模拟测试57

    T1:

      贴心送分题。

      对于每种颜色,如果多了,就会有多的数量除二的贡献,反之会有少的数量的需求。

      最后判断贡献和需求哪个大即可。

      时间复杂度$O(1)$。

    T2:

      边数太多,考虑将状态记录在点上。

      每一种可行方案是一个dag,可以按照拓扑序列分层。

      状态记录当前选中的集合,和最后一层的点的集合,然后枚举状态更新即可。

      更新时算出当前集合向拓展集合连的边数,每个点至少要有一条入边。

      考虑优化,省去第二维状态。

      枚举补集的子集,算出当前集合向拓展集合连的边数,每条边都可以连或不连。

      但是这样会算重,因为每次算出的方案并不一定能连接拓展集合的所有点。

      根据点数容斥一下,奇加偶减即可。

      注意枚举子集的内部不能再用循环算边数,从小到大枚举子集,做一个小的递推即可。

      时间复杂度$O(3^n+m2^n)$

    T3:

      莫比乌斯反演神题。

      $lcm$大于$n$的数对数不好求,考虑求$lcm$小于$n$的数对数。

      设这样求出的数对数为$res$,那么答案可以表示为:

        $ans=n^2-res$

      考虑求$res$:

        $large egin{array}{ll} res &=& sum limits_{i=1}^n sum limits_{j=1}^n [lcm(i,j)<=n] \ &=& sum limits_{d=1}^n sum limits_{i=1}^{lfloor frac{n}{d} floor} sum limits_{j=1}^{lfloor frac{n}{id} floor} [gcd(i,j)==1]*[ijd<=n] \ &=& sum limits_{d=1}^n sum limits_{i=1}^{lfloor frac{n}{d} floor} sum limits_{j=1}^{lfloor frac{n}{id} floor} sum limits_{g|gcd(i,j)} mu(g) *[ijd<=n] \ &=& sum limits_{d=1}^n sum limits_{g=1}^{lfloor sqrt{ frac{n}{d}} floor} mu(g) sum limits_{i=1}^{lfloor frac{n}{dg^2} floor} sum limits_{j=1}^{lfloor frac{n}{idg^2} floor} [ijdg^2<=n] \ &=& sum limits_{g=1}^{sqrt{n}} mu(g) sum limits_{d=1}^{lfloor frac{n}{g^2} floor} sum limits_{i=1}^{lfloor frac{n}{dg^2} floor} sum limits_{j=1}^{lfloor frac{n}{idg^2} floor} [ijdg^2<=n]end{array}$

      发现$d$,$i$,$j$并没有本质区别,于是我们可以假定$d<=i<=j$,然后再乘上排列数。

      于是上界可以卡的更小。

      $d$,$i$,$j$中两个数相等,排列数为3;三个数都相等,排列数为1;三个数都不等,排列数为6。

        $large egin{array}{ll} res &=& sum limits_{g=1}^{sqrt{n}} mu(g) sum limits_{d=1}^{lfloor sqrt[3]{frac{n}{g^2}} floor} sum limits_{i=d}^{lfloor sqrt{frac{n}{dg^2}} floor} sum limits_{j=i}^{lfloor  frac{n}{dig^2} floor} [ijdg^2<=n] \ &=& sum limits_{g=1}^{sqrt{n}} mu(g) sum limits_{d=1}^{lfloor sqrt[3]{frac{n}{g^2}} floor} sum limits_{i=d}^{lfloor sqrt{frac{n}{dg^2}} floor} (lfloor frac{n}{dig^2} floor -i)*(3*[d==i]+6*[d!=i]) + ([d==i]+3*[d!=i])end{array}$

      线性筛求莫比乌斯函数,然后枚举计算即可。

      时间复杂度约为$O(n^{frac{2}{3}})$

  • 相关阅读:
    ecmascript6入门
    优化代码,引发了早期缺陷导致新bug
    realm
    Hypervisor scheduler
    WEEX学习网站
    JavaScript while 循环
    JavaScript for 循环
    JavaScript switch 语句
    JavaScript If…Else 语句
    JavaScript 比较和逻辑运算符
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11621308.html
Copyright © 2011-2022 走看看