码迷,mamicode.com
首页 > 其他好文 > 详细

模拟测试57

时间:2019-10-04 17:18:01      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:模拟   莫比乌斯反演   时间   size   没有   bsp   子集   style   mil   

T1:

  贴心送分题。

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

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

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

T2:

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

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

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

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

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

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

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

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

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

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

T3:

  莫比乌斯反演神题。

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

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

    $ans=n^2-res$

  考虑求$res$:

    $\large \begin{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} \rfloor} \sum \limits_{j=1}^{\lfloor \frac{n}{id} \rfloor} [gcd(i,j)==1]*[ijd<=n] \\ &=& \sum \limits_{d=1}^n \sum \limits_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum \limits_{j=1}^{\lfloor \frac{n}{id} \rfloor} \sum \limits_{g|gcd(i,j)} \mu(g) *[ijd<=n] \\ &=& \sum \limits_{d=1}^n \sum \limits_{g=1}^{\lfloor \sqrt{ \frac{n}{d}} \rfloor} \mu(g) \sum \limits_{i=1}^{\lfloor \frac{n}{dg^2} \rfloor} \sum \limits_{j=1}^{\lfloor \frac{n}{idg^2} \rfloor} [ijdg^2<=n] \\ &=& \sum \limits_{g=1}^{\sqrt{n}} \mu(g) \sum \limits_{d=1}^{\lfloor \frac{n}{g^2} \rfloor} \sum \limits_{i=1}^{\lfloor \frac{n}{dg^2} \rfloor} \sum \limits_{j=1}^{\lfloor \frac{n}{idg^2} \rfloor} [ijdg^2<=n]\end{array}$

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

  于是上界可以卡的更小。

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

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

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

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

模拟测试57

标签:模拟   莫比乌斯反演   时间   size   没有   bsp   子集   style   mil   

原文地址:https://www.cnblogs.com/hz-Rockstar/p/11621308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!