前言
期望:100+70+0=170
 实际:40+0+0=40
 rnk14
分全部挂没了,太行了。
 T1不开longlong见祖宗,而且KH说的那个也有道理,带权之后树的重心可以不只有两个,所以最后还应该倍增的跳。(然而这个地方题解似乎都忽略了)
 T2线性筛写挂身败名裂。
 T3根本没摸,本来还打算至少敲个暴力来着,但被T2心态搞炸了。
题目解析
树的核心(core)
我、kH、pdf一边一个做法的一道题。
 但是必须承认pdf的做法实现是最简单的。
我这个题的做法倒是出的很快,差不多8:30就出思路了。
 我的做法是找到当前加一的部分的重心,新重心一定在旧重心和原来这个重心的路径上。
 代码实现的很不好,写拍调整到十点。
pdf思路:答案的子树权值大小必然严格大于总权值一半,那么在dfs序的线段树上按照点权二分,找到权值中点对应的结点,其必然在答案的子树内,也就是说,答案必然在该结点的返祖链上。
 往上倍增的找即可。
随机填数(random)
写完T1看这题。
 是我之前做过的一道CF的多测板。
 按照CF的做法有70。
 一方面给了我方便,也某种程度上限制了我的思维罢。
 但这题我也确实做不出来,需要的那个技巧根本就不在我脑子的“寄存器”里,估计很难访问到了。
一个重要结论:
 
     
      
       
        
         E
        
        
         (
        
        
         x
        
        
         )
        
        
         =
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           1
          
         
        
        
         P
        
        
         (
        
        
         x
        
        
         ≥
        
        
         i
        
        
         )
        
       
       
        E(x)=\sum_{i=1}P(x\ge i)
       
      
     E(x)=i=1∑P(x≥i)
 较为显然,之前也见到过,但没有特别上心。
 然而,本题后面这个概率却能很方便的求出。
 首先分母很好办,就是 
    
     
      
       
        
         m
        
        
         
          i
         
         
          −
         
         
          1
         
        
       
      
      
       m^{i-1}
      
     
    mi−1。
    
     
      
       
        x
       
       
        ≥
       
       
        i
       
      
      
       x\ge i
      
     
    x≥i 也就等价于 
    
     
      
       
        [
       
       
        1
       
       
        ,
       
       
        i
       
       
        −
       
       
        1
       
       
        ]
       
      
      
       [1,i-1]
      
     
    [1,i−1] 的序列的 
    
     
      
       
        gcd
       
       
        
       
      
      
       \gcd
      
     
    gcd 大于1(只考虑 
    
     
      
       
        i
       
       
        >
       
       
        1
       
      
      
       i>1
      
     
    i>1)。那么我们考虑补集,也就是 
    
     
      
       
        gcd
       
       
        
       
       
        =
       
       
        1
       
      
      
       \gcd=1
      
     
    gcd=1 的序列有多少个:
 
     
      
       
        
         
          ∑
         
         
          
           a
          
          
           
            1...
           
           
            i
           
           
            −
           
           
            1
           
          
         
        
        
         [
        
        
         (
        
        
         
          a
         
         
          1
         
        
        
         ,
        
        
         
          a
         
         
          2
         
        
        
         ,
        
        
         .
        
        
         .
        
        
         .
        
        
         ,
        
        
         
          a
         
         
          
           i
          
          
           −
          
          
           1
          
         
        
        
         )
        
        
         =
        
        
         1
        
        
         ]
        
       
       
        \sum_{a_{1...i-1}}[(a_1,a_2,...,a_{i-1})=1]
       
      
     a1...i−1∑[(a1,a2,...,ai−1)=1]
 
     
      
       
        
         =
        
        
         
          ∑
         
         
          
           a
          
          
           
            1...
           
           
            i
           
           
            −
           
           
            1
           
          
         
        
        
         
          ∑
         
         
          
           d
          
          
           ∣
          
          
           (
          
          
           
            a
           
           
            1
           
          
          
           ,
          
          
           
            a
           
           
            2
           
          
          
           ,
          
          
           .
          
          
           .
          
          
           .
          
          
           ,
          
          
           
            a
           
           
            
             i
            
            
             −
            
            
             1
            
           
          
          
           )
          
         
        
        
         μ
        
        
         (
        
        
         d
        
        
         )
        
       
       
        =\sum_{a_{1...i-1}}\sum_{d|(a_1,a_2,...,a_{i-1})}\mu(d)
       
      
     =a1...i−1∑d∣(a1,a2,...,ai−1)∑μ(d)
 
     
      
       
        
         =
        
        
         
          ∑
         
         
          
           d
          
          
           =
          
          
           1
          
         
         
          m
         
        
        
         μ
        
        
         (
        
        
         d
        
        
         )
        
        
         ⌊
        
        
         
          m
         
         
          d
         
        
        
         
          ⌋
         
         
          
           i
          
          
           −
          
          
           1
          
         
        
       
       
        =\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i-1}
       
      
     =d=1∑mμ(d)⌊dm⌋i−1
 那么我们其实就是求:
 
     
      
       
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           2
          
         
         
          ∞
         
        
        
         P
        
        
         (
        
        
         x
        
        
         ≥
        
        
         i
        
        
         )
        
        
         +
        
        
         1
        
       
       
        \sum_{i=2}^{\infty}P(x\ge i)+1
       
      
     i=2∑∞P(x≥i)+1
 
     
      
       
        
         =
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           2
          
         
         
          ∞
         
        
        
         
          
           
            m
           
           
            
             i
            
            
             −
            
            
             1
            
           
          
          
           −
          
          
           
            ∑
           
           
            
             d
            
            
             =
            
            
             1
            
           
           
            m
           
          
          
           μ
          
          
           (
          
          
           d
          
          
           )
          
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           
            ⌋
           
           
            
             i
            
            
             −
            
            
             1
            
           
          
         
         
          
           m
          
          
           
            i
           
           
            −
           
           
            1
           
          
         
        
        
         +
        
        
         1
        
       
       
        =\sum_{i=2}^{\infty}\frac{m^{i-1}-\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i-1}}{m^{i-1}}+1
       
      
     =i=2∑∞mi−1mi−1−∑d=1mμ(d)⌊dm⌋i−1+1
 
     
      
       
        
         =
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           1
          
         
         
          ∞
         
        
        
         
          
           
            m
           
           
            i
           
          
          
           −
          
          
           
            ∑
           
           
            
             d
            
            
             =
            
            
             1
            
           
           
            m
           
          
          
           μ
          
          
           (
          
          
           d
          
          
           )
          
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           
            ⌋
           
           
            i
           
          
         
         
          
           m
          
          
           i
          
         
        
        
         +
        
        
         1
        
       
       
        =\sum_{i=1}^{\infty}\frac{m^i-\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i}}{m^i}+1
       
      
     =i=1∑∞mimi−∑d=1mμ(d)⌊dm⌋i+1
 
     
      
       
        
         =
        
        
         1
        
        
         −
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           1
          
         
         
          ∞
         
        
        
         
          
           
            ∑
           
           
            
             d
            
            
             =
            
            
             2
            
           
           
            m
           
          
          
           μ
          
          
           (
          
          
           d
          
          
           )
          
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           
            ⌋
           
           
            i
           
          
         
         
          
           m
          
          
           i
          
         
        
       
       
        =1-\sum_{i=1}^{\infty}\frac{\sum_{d=2}^m\mu(d)\lfloor\frac m d \rfloor^{i}}{m^i}
       
      
     =1−i=1∑∞mi∑d=2mμ(d)⌊dm⌋i
 
     
      
       
        
         =
        
        
         1
        
        
         −
        
        
         
          ∑
         
         
          
           d
          
          
           =
          
          
           1
          
         
         
          m
         
        
        
         μ
        
        
         (
        
        
         d
        
        
         )
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           1
          
         
         
          ∞
         
        
        
         
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           
            ⌋
           
           
            i
           
          
         
         
          
           m
          
          
           i
          
         
        
       
       
        =1-\sum_{d=1}^m\mu(d)\sum_{i=1}^{\infty}\frac{\lfloor\frac m d \rfloor^{i}}{m^i}
       
      
     =1−d=1∑mμ(d)i=1∑∞mi⌊dm⌋i
 
     
      
       
        
         =
        
        
         1
        
        
         −
        
        
         
          ∑
         
         
          
           d
          
          
           =
          
          
           1
          
         
         
          m
         
        
        
         μ
        
        
         (
        
        
         d
        
        
         )
        
        
         
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           ⌋
          
         
         
          
           m
          
          
           −
          
          
           ⌊
          
          
           
            m
           
           
            d
           
          
          
           ⌋
          
         
        
       
       
        =1-\sum_{d=1}^m\mu(d)\frac{\lfloor\frac m d \rfloor}{m-\lfloor\frac m d \rfloor}
       
      
     =1−d=1∑mμ(d)m−⌊dm⌋⌊dm⌋
 预处理 
    
     
      
       
        μ
       
      
      
       \mu
      
     
    μ 的前缀和,整除分块即可做到单次 
    
     
      
       
        O
       
       
        (
       
       
        
         n
        
       
       
        )
       
      
      
       O(\sqrt n)
      
     
    O(n)。
等权划分(value)
由于本次考试上来就对T1有了思路,调完T1又一直在T2挣扎,所以这个题几乎没有摸。
 因而谈不太上考场感受,但是看题解感觉我应该是做不出来的。
 三个关键点,我的评价分别是:很难想到,很难想到,很难想到。
 毕竟做题可是且运算,卡一个地方这题就没了。
 由于字典序优秀的贪心性质,我们可以每次都尽可能的尝试填A,然后判断接下来的局面是否有解。
 那么问题就转化为了对于一个局面,如何快速判断有无解。
证明:如果一个序列存在非必大点的合法点,那么其前方第一个必大点必然在另一个序列里。那么若两个序列都存在非必大点的合法点,令两个对应的必大点互换位置,即可保证合法点数都减一的同时,使非必大点个消失一个。不断如此操作,至少有一个序列的合法点全是必大点。
 (个人感觉证明倒不是特别难,但真的很难独立猜出这种鬼马结论并认为它有用…)
我们强制令一个序列全是必大点(注意这个序列即可以是A,也可以是B,下面假设其为B)。若后边还有 
    
     
      
       
        c
       
      
      
       c
      
     
    c 个必大点,A选的合法点中必大点和非必大点分别有 
    
     
      
       
        p
       
       
        ,
       
       
        q
       
      
      
       p,q
      
     
    p,q 个,A、B当前选的合法点有 
    
     
      
       
        f
       
       
        a
       
       
        ,
       
       
        f
       
       
        b
       
      
      
       fa,fb
      
     
    fa,fb 个,那么就有:
 
     
      
       
        
         f
        
        
         a
        
        
         +
        
        
         p
        
        
         +
        
        
         q
        
        
         =
        
        
         f
        
        
         b
        
        
         +
        
        
         c
        
        
         −
        
        
         p
        
       
       
        fa+p+q=fb+c-p
       
      
     fa+p+q=fb+c−p
 整理得:
 
     
      
       
        
         2
        
        
         p
        
        
         +
        
        
         q
        
        
         =
        
        
         f
        
        
         b
        
        
         −
        
        
         f
        
        
         a
        
        
         +
        
        
         c
        
       
       
        2p+q=fb-fa+c
       
      
     2p+q=fb−fa+c
 其中右边的东西对于某个确定局面为定值,设其为 
    
     
      
       
        w
       
      
      
       w
      
     
    w。令A序列选取必大点为合法点的价值为2,非必大点的价值是1,那么就要求存在一种选点方案使得总权值为 
    
     
      
       
        w
       
      
      
       w
      
     
    w。
(这个pdf没有细讲,但我觉得还是需要讲一下的)
 证明:前缀最大值必然递增,必要性显然。充分性尝试构造性证明:对于一个递增子序列S,从前往后考虑每个元素划分到哪里。对于一个属于S的元素,直接给A,否则,若是必大点,直接给B,否则,其前面必然存在比它大的元素x,把当前元素划分到x所在的序列即可。
又注意到,由于元素只有1或2,那么如果权值x是合法的,那么x-2必然也是合法的。所以我们只需要对奇权值和偶权值分别从后往前做一遍带权LIS并互相转移,每次在 w w w 奇偶性对应的线段树上查询是否不小于 w w w 即可。










