目录
- 投篮
- 题目描述
- 背景
- 输入
- 输出
- 数据范围
 
- 题解
- 解法
 
- 打赏
 
投篮
题目描述
背景
现在你得到了一个可以阻拦投篮的宝物,它会在投球后把篮球传送回运动员手上,但是宝物的成功率和篮球在空中运动的时间有关,并且在特定的时间点成功的几率是固定的,例如在第 
     
      
       
       
         3 
        
       
      
        3 
       
      
    3秒成功率是 
     
      
       
        
        
          1 
         
        
          4 
         
        
       
      
        1 \over 4 
       
      
    41,那么不论是第几次投球,在篮球投出后的第 
     
      
       
       
         3 
        
       
      
        3 
       
      
    3秒,宝物成功的几率都是 
     
      
       
        
        
          1 
         
        
          4 
         
        
       
      
        1 \over 4 
       
      
    41
 宝物每秒初可以使用一次,例如在投球后的第 
     
      
       
       
         1 
        
       
      
        1 
       
      
    1秒时使用失败,可以在第 
     
      
       
       
         2 
        
       
      
        2 
       
      
    2秒接着使用,直到阻拦成功或投篮成功,且投球瞬间可以阻拦,但是球击中篮筐的瞬间不可阻拦。并且一旦篮球回到运动员手上,他会立马再次投球。现在你想知道使用宝物的情况下,运动员从第一次投球到投篮成功的期望时间间隔
输入
- 第一行一个整数 n n n,表示篮球到篮筐的时间;
- 接下来 n n n行每行包含两个整数 x i , y i x_i , y_i xi,yi,二者之商 x i y i x_i \over y_i yixi表示第 i i i秒初宝物成功的概率
输出
输出一个整数表示答案(答案是一个有理数,请输出答案对质数 998244353 998244353 998244353取模的结果)
数据范围
1 ≤ n ≤ 1 e 5 , 1 ≤ x i < y i ≤ 1 e 9 1 \le n \le 1e5 , 1 \le x_i < y_i \le 1e9 1≤n≤1e5,1≤xi<yi≤1e9
题解
解法
每次投球之后击中篮筐且不被阻拦的概率是一样的,而求期望需要算出第一次投球后经过各种情况最终投中的概率再分别乘上各自的用时,因而这些情况中最后一次投球都击中了篮筐,所以对于这些情况,它们最后一次投球后的概率计算都是一样的
 所以可以按照次数对这些不同的情况进行分类,分别算出期望时间再相加
- 若第一次投球击中,则概率为 ∏ i = 1 n ( 1 − x i y i ) \prod_{i = 1}^n (1 - {x_i \over y_i}) ∏i=1n(1−yixi),将其记作 m m m,那么第一次击中这类情况对最终期望的贡献为 m ∗ n m * n m∗n
- 若第二次投球击中,则需在一次击中的基础上向前增加一次未击中的投球,而这次未击中的投球有很多种情况,它们的概率之和为 
      
       
        
        
          1 
         
        
          − 
         
        
          m 
         
        
       
         1 - m 
        
       
     1−m,所以二次击中的概率为 
      
       
        
        
          ( 
         
        
          1 
         
        
          − 
         
        
          m 
         
        
          ) 
         
        
          m 
         
        
       
         (1 - m)m 
        
       
     (1−m)m。由于那次未击中的投球存在某些情况耗费时间,所以二次击中这类情况的贡献不能简单视为 
      
       
        
        
          ( 
         
        
          1 
         
        
          − 
         
        
          m 
         
        
          ) 
         
        
          m 
         
        
          ∗ 
         
        
          n 
         
        
       
         (1 - m)m* n 
        
       
     (1−m)m∗n。易知那次未击中的投球共有 
      
       
        
        
          n 
         
        
       
         n 
        
       
     n种情况,由第 
      
       
        
        
          i 
         
        
       
         i 
        
       
     i种情况推得的二次击中的贡献为 
      
       
        
        
          [ 
         
         
         
           ∏ 
          
          
          
            j 
           
          
            = 
           
          
            1 
           
          
          
          
            i 
           
          
            − 
           
          
            1 
           
          
         
        
          ( 
         
        
          1 
         
        
          − 
         
         
          
          
            x 
           
          
            j 
           
          
          
          
            y 
           
          
            j 
           
          
         
        
          ) 
         
        
          ] 
         
        
          ∗ 
         
         
          
          
            x 
           
          
            i 
           
          
          
          
            y 
           
          
            i 
           
          
         
        
          ∗ 
         
        
          m 
         
        
          ∗ 
         
        
          ( 
         
        
          n 
         
        
          + 
         
        
          i 
         
        
          − 
         
        
          1 
         
        
          ) 
         
        
       
         [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} * m * (n + i - 1) 
        
       
     [∏j=1i−1(1−yjxj)]∗yixi∗m∗(n+i−1),所以贡献之和为:
 ∑ i = 1 n { [ ∏ j = 1 i − 1 ( 1 − x j y j ) ] ∗ x i y i ∗ m ∗ ( n + i − 1 ) } = m ∗ n ∗ ∑ i = 1 n { [ ∏ j = 1 i − 1 ( 1 − x j y j ) ] ∗ x i y i } + m ∗ ∑ i = 1 n { [ ∏ j = 1 i − 1 ( 1 − x j y j ) ] ∗ x i y i ∗ ( i − 1 ) } = m ∗ n ∗ ( 1 − m ) + m ∗ ∑ i = 1 n { [ ∏ j = 1 i − 1 ( 1 − x j y j ) ] ∗ x i y i ∗ ( i − 1 ) } \begin{aligned} \sum_{i = 1}^n \{ [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} * m * (n + i - 1) \} & = m * n * \sum_{i = 1}^n \{ [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} \} + m * \sum_{i = 1}^n \{ [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} * (i - 1) \}\\ & = m * n * (1 - m) + m * \sum_{i = 1}^n \{ [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} * (i - 1) \} \end{aligned} i=1∑n{[j=1∏i−1(1−yjxj)]∗yixi∗m∗(n+i−1)}=m∗n∗i=1∑n{[j=1∏i−1(1−yjxj)]∗yixi}+m∗i=1∑n{[j=1∏i−1(1−yjxj)]∗yixi∗(i−1)}=m∗n∗(1−m)+m∗i=1∑n{[j=1∏i−1(1−yjxj)]∗yixi∗(i−1)}
依此类推,设 
     
      
       
       
         k 
        
       
         = 
        
        
        
          ∑ 
         
         
         
           i 
          
         
           = 
          
         
           1 
          
         
        
          n 
         
        
       
         { 
        
       
         [ 
        
        
        
          ∏ 
         
         
         
           j 
          
         
           = 
          
         
           1 
          
         
         
         
           i 
          
         
           − 
          
         
           1 
          
         
        
       
         ( 
        
       
         1 
        
       
         − 
        
        
         
         
           x 
          
         
           j 
          
         
         
         
           y 
          
         
           j 
          
         
        
       
         ) 
        
       
         ] 
        
       
         ∗ 
        
        
         
         
           x 
          
         
           i 
          
         
         
         
           y 
          
         
           i 
          
         
        
       
         ∗ 
        
       
         ( 
        
       
         i 
        
       
         − 
        
       
         1 
        
       
         ) 
        
       
         } 
        
       
      
        k = \sum_{i = 1}^n \{ [\prod_{j = 1}^{i - 1} (1 - {x_j \over y_j})] * {x_i \over y_i} * (i - 1) \} 
       
      
    k=∑i=1n{[∏j=1i−1(1−yjxj)]∗yixi∗(i−1)},因为 
     
      
       
       
         1 
        
       
         − 
        
       
         m 
        
       
         , 
        
       
         k 
        
       
      
        1 - m , k 
       
      
    1−m,k都是常数,所以第 
     
      
       
       
         i 
        
       
         ( 
        
       
         i 
        
       
         > 
        
       
         1 
        
       
         ) 
        
       
      
        i(i > 1) 
       
      
    i(i>1)次投球击中的概率和贡献可以由第 
     
      
       
       
         i 
        
       
         − 
        
       
         1 
        
       
      
        i - 1 
       
      
    i−1次投球击中的概率和贡献线性表示,设第 
     
      
       
       
         i 
        
       
      
        i 
       
      
    i次投球击中的概率和贡献分别为 
     
      
       
        
        
          p 
         
        
          i 
         
        
       
         , 
        
        
        
          a 
         
        
          i 
         
        
       
      
        p_i , a_i 
       
      
    pi,ai,即 
     
      
       
        
        
          [ 
         
         
          
           
            
             
             
               p 
              
             
               i 
              
             
            
           
          
          
           
            
             
             
               a 
              
             
               i 
              
             
            
           
          
         
        
          ] 
         
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               1 
              
             
               − 
              
             
               m 
              
             
            
           
           
            
            
              0 
             
            
           
          
          
           
            
            
              k 
             
            
           
           
            
             
             
               1 
              
             
               − 
              
             
               m 
              
             
            
           
          
         
        
          ] 
         
        
        
        
          [ 
         
         
          
           
            
             
             
               p 
              
              
              
                i 
               
              
                − 
               
              
                1 
               
              
             
            
           
          
          
           
            
             
             
               a 
              
              
              
                i 
               
              
                − 
               
              
                1 
               
              
             
            
           
          
         
        
          ] 
         
        
       
         ( 
        
       
         i 
        
       
         > 
        
       
         1 
        
       
         ) 
        
       
      
        \begin{bmatrix} p_i \\ a_i \end{bmatrix} = \begin{bmatrix} 1 - m & 0 \\ k & 1 - m \end{bmatrix} \begin{bmatrix} p_{i - 1} \\ a_{i - 1} \end{bmatrix}(i > 1) 
       
      
    [piai]=[1−mk01−m][pi−1ai−1](i>1)
 又 
     
      
       
        
         
         
           [ 
          
          
           
            
             
              
              
                1 
               
              
                − 
               
              
                m 
               
              
             
            
            
             
             
               0 
              
             
            
           
           
            
             
             
               k 
              
             
            
            
             
              
              
                1 
               
              
                − 
               
              
                m 
               
              
             
            
           
          
         
           ] 
          
         
        
          i 
         
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               ( 
              
             
               1 
              
             
               − 
              
             
               m 
              
              
              
                ) 
               
              
                i 
               
              
             
            
           
           
            
            
              0 
             
            
           
          
          
           
            
             
             
               i 
              
             
               ( 
              
             
               1 
              
             
               − 
              
             
               m 
              
              
              
                ) 
               
               
               
                 i 
                
               
                 − 
                
               
                 1 
                
               
              
             
               k 
              
             
            
           
           
            
             
             
               ( 
              
             
               1 
              
             
               − 
              
             
               m 
              
              
              
                ) 
               
              
                i 
               
              
             
            
           
          
         
        
          ] 
         
        
       
      
        \begin{bmatrix} 1 - m & 0 \\ k & 1 - m \end{bmatrix}^i = \begin{bmatrix} (1 - m)^i & 0 \\ i(1 - m)^{i - 1}k & (1 - m)^i \end{bmatrix} 
       
      
    [1−mk01−m]i=[(1−m)ii(1−m)i−1k0(1−m)i],因此:
 
     
      
       
        
         
          
           
           
             [ 
            
            
             
              
               
                
                
                  p 
                 
                
                  i 
                 
                
               
              
             
             
              
               
                
                
                  a 
                 
                
                  i 
                 
                
               
              
             
            
           
             ] 
            
           
          
         
         
          
           
            
           
             = 
            
            
             
             
               [ 
              
              
               
                
                 
                  
                  
                    1 
                   
                  
                    − 
                   
                  
                    m 
                   
                  
                 
                
                
                 
                 
                   0 
                  
                 
                
               
               
                
                 
                 
                   k 
                  
                 
                
                
                 
                  
                  
                    1 
                   
                  
                    − 
                   
                  
                    m 
                   
                  
                 
                
               
              
             
               ] 
              
             
             
             
               i 
              
             
               − 
              
             
               1 
              
             
            
            
            
              [ 
             
             
              
               
                
                 
                 
                   p 
                  
                 
                   1 
                  
                 
                
               
              
              
               
                
                 
                 
                   a 
                  
                 
                   1 
                  
                 
                
               
              
             
            
              ] 
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
           
             = 
            
            
            
              [ 
             
             
              
               
                
                 
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                  
                  
                    ) 
                   
                   
                   
                     i 
                    
                   
                     − 
                    
                   
                     1 
                    
                   
                  
                 
                
               
               
                
                
                  0 
                 
                
               
              
              
               
                
                 
                 
                   ( 
                  
                 
                   i 
                  
                 
                   − 
                  
                 
                   1 
                  
                 
                   ) 
                  
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                  
                  
                    ) 
                   
                   
                   
                     i 
                    
                   
                     − 
                    
                   
                     2 
                    
                   
                  
                 
                   k 
                  
                 
                
               
               
                
                 
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                  
                  
                    ) 
                   
                   
                   
                     i 
                    
                   
                     − 
                    
                   
                     1 
                    
                   
                  
                 
                
               
              
             
            
              ] 
             
            
            
            
              [ 
             
             
              
               
                
                
                  m 
                 
                
               
              
              
               
                
                 
                 
                   m 
                  
                 
                   n 
                  
                 
                
               
              
             
            
              ] 
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
           
             = 
            
            
            
              [ 
             
             
              
               
                
                 
                 
                   m 
                  
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                  
                  
                    ) 
                   
                   
                   
                     i 
                    
                   
                     − 
                    
                   
                     1 
                    
                   
                  
                 
                
               
              
              
               
                
                 
                 
                   m 
                  
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                  
                  
                    ) 
                   
                   
                   
                     i 
                    
                   
                     − 
                    
                   
                     2 
                    
                   
                  
                 
                   [ 
                  
                 
                   k 
                  
                 
                   ( 
                  
                 
                   i 
                  
                 
                   − 
                  
                 
                   1 
                  
                 
                   ) 
                  
                 
                   + 
                  
                 
                   n 
                  
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                 
                   m 
                  
                 
                   ) 
                  
                 
                   ] 
                  
                 
                
               
              
             
            
              ] 
             
            
           
          
         
        
       
      
        \begin{aligned} \begin{bmatrix} p_i \\ a_i \end{bmatrix} & = \begin{bmatrix} 1 - m & 0 \\ k & 1 - m \end{bmatrix}^{i - 1} \begin{bmatrix} p_1 \\ a_1 \end{bmatrix} \\ & = \begin{bmatrix} (1 - m)^{i - 1} & 0 \\ (i - 1)(1 - m)^{i - 2}k & (1 - m)^{i - 1} \end{bmatrix} \begin{bmatrix} m \\ mn \end{bmatrix} \\ & = \begin{bmatrix} m (1 - m)^{i - 1} \\ m(1 - m)^{i - 2}[k(i - 1) + n(1 - m)] \end{bmatrix} \end{aligned} 
       
      
    [piai]=[1−mk01−m]i−1[p1a1]=[(1−m)i−1(i−1)(1−m)i−2k0(1−m)i−1][mmn]=[m(1−m)i−1m(1−m)i−2[k(i−1)+n(1−m)]]
 所以最终的期望为:
  
     
      
       
        
         
          
           
            
            
              ∑ 
             
             
             
               i 
              
             
               = 
              
             
               1 
              
             
            
              ∞ 
             
            
           
             m 
            
           
             ( 
            
           
             1 
            
           
             − 
            
           
             m 
            
            
            
              ) 
             
             
             
               i 
              
             
               − 
              
             
               2 
              
             
            
           
             [ 
            
           
             k 
            
           
             ( 
            
           
             i 
            
           
             − 
            
           
             1 
            
           
             ) 
            
           
             + 
            
           
             n 
            
           
             ( 
            
           
             1 
            
           
             − 
            
           
             m 
            
           
             ) 
            
           
             ] 
            
           
          
         
         
          
           
            
           
             = 
            
           
             m 
            
           
             n 
            
            
            
              ∑ 
             
             
             
               i 
              
             
               = 
              
             
               1 
              
             
            
              ∞ 
             
            
           
             ( 
            
           
             1 
            
           
             − 
            
           
             m 
            
            
            
              ) 
             
             
             
               i 
              
             
               − 
              
             
               1 
              
             
            
           
             + 
            
           
             m 
            
           
             k 
            
            
            
              ∑ 
             
             
             
               i 
              
             
               = 
              
             
               0 
              
             
            
              ∞ 
             
            
           
             ( 
            
           
             i 
            
           
             + 
            
           
             1 
            
           
             ) 
            
           
             ( 
            
           
             1 
            
           
             − 
            
           
             m 
            
            
            
              ) 
             
            
              i 
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
           
             = 
            
           
             m 
            
           
             n 
            
            
             
             
               1 
              
             
               − 
              
             
               ( 
              
             
               1 
              
             
               − 
              
             
               m 
              
              
              
                ) 
               
              
                ∞ 
               
              
             
             
             
               1 
              
             
               − 
              
             
               ( 
              
             
               1 
              
             
               − 
              
             
               m 
              
             
               ) 
              
             
            
           
             + 
            
           
             m 
            
           
             k 
            
            
            
              ∑ 
             
             
             
               i 
              
             
               = 
              
             
               0 
              
             
            
              ∞ 
             
            
            
             
             
               ( 
              
             
               − 
              
             
               1 
              
              
              
                ) 
               
              
                i 
               
              
             
               ( 
              
             
               i 
              
             
               + 
              
             
               1 
              
             
               ) 
              
             
               ! 
              
             
             
             
               i 
              
             
               ! 
              
             
            
           
             ( 
            
           
             m 
            
           
             − 
            
           
             1 
            
            
            
              ) 
             
            
              i 
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
           
             = 
            
            
             
             
               m 
              
             
               n 
              
             
            
              m 
             
            
           
             + 
            
           
             m 
            
           
             k 
            
           
             ∗ 
            
            
            
              1 
             
             
             
               m 
              
             
               2 
              
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
           
             = 
            
           
             n 
            
           
             + 
            
            
            
              k 
             
            
              m 
             
            
           
          
         
        
       
      
        \begin{aligned} \sum_{i = 1}^\infty m(1 - m)^{i - 2}[k(i - 1) + n(1 - m)] & = mn \sum_{i = 1}^\infty (1 - m)^{i - 1} + mk \sum_{i = 0}^\infty (i + 1)(1 - m)^i \\ & = mn {1 - (1 - m)^\infty \over 1 - (1 - m)} + mk \sum_{i = 0}^\infty {(-1)^i (i + 1)! \over i!} (m - 1)^i \\ & = {mn \over m} + mk * {1 \over m^2}\\ & = n + {k \over m} \end{aligned} 
       
      
    i=1∑∞m(1−m)i−2[k(i−1)+n(1−m)]=mni=1∑∞(1−m)i−1+mki=0∑∞(i+1)(1−m)i=mn1−(1−m)1−(1−m)∞+mki=0∑∞i!(−1)i(i+1)!(m−1)i=mmn+mk∗m21=n+mk
 由于 
     
      
       
       
         k 
        
       
         , 
        
       
         m 
        
       
      
        k , m 
       
      
    k,m均为分数,所以各需要两个变量来储存,分别表示分子和分母,答案要求的是有理数对 
     
      
       
       
         998244353 
        
       
      
        998244353 
       
      
    998244353取模的结果,所以需要使用乘法逆元
 代码如下:
#include<cstdio>
#define il inline
#define ll long long
const int mod = 998244353;
il int read() {
    int x = 0;
    char c = getchar();
    while(c < '0' || c > '9') c = getchar();
    while(c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
    return x;
}
il int qpow(int x, int y) {
    int ret = 1;
    for(int i = x; y; i = (ll)i * i % mod, y >>= 1)
        if(y % 2) ret = (ll)ret * i % mod;
    return ret;
}
int n, ma = 1, mb = 1, ka, kb = 1;
int main() {
    n = read();
    for(int i = 1; i <= n; ++i) {
        int a = read() % mod, b = read() % mod;
        ka = ((ll)ka * mb % mod * b % mod + (ll)kb * ma % mod * a % mod * (i - 1) % mod) % mod;
        kb = (ll)kb * mb % mod * b % mod;
        ma = (ll)ma * ((b - a + mod) % mod) % mod;
        mb = (ll)mb * b % mod;
    }
    int ansb = (ll)ma * kb % mod, ansa = ((ll)n * ansb % mod + (ll)mb * ka % mod) % mod;
    printf("%d", (ll)ansa * qpow(ansb, mod - 2) % mod);     //用欧拉定理求乘法逆元
    return 0;
}
打赏
制作不易,若有帮助,欢迎打赏!
 




















