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

    好像一年没写题解了

    这次考试好像从开考10min后就没有分了?

    T2用错误的题意和错误的代码得出了样例,偷税然鹅爆零了

    T3只会打暴力,试着反演然而第一不会证复杂度第二反演已经快忘干净了

    T1:天空龙

    %%%kx

    T2:巨神兵

    题意大概就是求构成DAG的方案数

    既然是DAG理所当然的想到分层

    设$ dp[i][j] $表示当前点集为i,最后一层为j的方案数

    令$ in(i,j) $表示j中的点都和i中的点有边,$ has[i] $表示能直接到i的点,$ cnt[i] $表示i中1的个数

    那么$ dp[icup t][t]=sum limits_{in(j,t),icap t== varnothing }dp[i][j]prod limits_{pepsilon t}(2^{cnt[has[p]cap j]}-1)(2^{cnt[has[p]cap (i wedge j)]})   $

    然而这样复杂度是$ O(4^{n}n) $的,考虑一下怎么优化

    假设我们把dp第二维去掉,即$ dp[i] $表示当前点集为i的方案数

    由于我们仍然分层进行dp,不用考虑出环的情况,那就只剩下了方案重复的情况

    考虑容斥,我们让每个sz为奇数的集合对答案加上贡献,为偶数的对答案减去贡献

    因为对于点集i|j的一种连边方案,可以有多种方式划分成i,j,

    这就意味着不同的i,j可能包含了同样的方案。

    于是以j中包含的元素把并集为k的i和j分类

    得到转移方程$ dp[icup j]=sum limits_{icap j==varnothing }(-1)^{cnt[i]+1}dp[i]prod limits_{pin j }2^{cnt[has[p]cap i]} $

    复杂度$ O(3^{n}n) $

    T3:太阳神

    反演快忘干净的蒟蒻试图通过一道题来复习

    由于>n的不好计算,我们计算<n的情况

      $sum limits_{i=1}^{n}sumlimits_{j=1}^{n}[ frac{ij}{gcd(i,j)}leq n ]$

      =$sumlimits_{d=1}^{n}sum limits_{i=1}^{left lfloor frac{n}{d} ight floor}sumlimits_{j=1}^{left lfloor frac{n}{di} ight floor}left [ gcd(i,j)==1 ight ]$

      =$sumlimits_{d=1}^{n}sum limits_{i=1}^{left lfloor frac{n}{d} ight floor}sumlimits_{j=1}^{left lfloor frac{n}{di} ight floor} sum limits_{gmid gcd(i,j)}mu [g]$

      =$sum limits_{d=1}^{n}sumlimits_{g=1}mu [g]sum limits_{i=1}sum limits_{j=1} left lfloor frac{n}{ijdg^2} ight floor$

      =$sum limits_{i=1}^{sqrt{n}}mu [i]sum limits_{a=1}sum limits_{b=1} sum limits_{d=1}[abdleq frac{n}{i^{2}}]$

    直接枚举i,a,b可以得到可行的d,通过积分可知复杂度为$ O(n^{frac{2}{3}}) $

  • 相关阅读:
    关于JVM的一些东西
    网络的最大流最小割定理
    类的生命周期
    关于java中的不可变类(转)
    如何在Linux上升级java
    CAS操作
    如何使用fastJson来解析JSON格式数据和生成JSON格式数据
    计算机中如何实现除数是2的幂次的除法【转载自CSDN】
    python:使用Fabric自动化你的任务
    python中的元类
  • 原文地址:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11619117.html
Copyright © 2011-2022 走看看