csp-s模拟91

T1:
  分析发现,由于\(1+2+3+...+x = (1+x)*x/2\)\(x^2\)级别的
  所以若总牌数为n,那么牌堆数量的种类数的级别是\(\sqrt{n}\)的,所以暴力就好了……
 
T2:
  考虑对每一个位置进行一次dp
  若当前考虑的位置为p,考虑影响该数最后位置的数只有和它相等的数
  那么模拟归并的过程,不妨考虑在某一次归并时,p在左边
 
  设\(g_i\)表示上一层p排在第i位的概率,\(g'_i\)表示这一层p排在第i位的概率
  再预处理出一个数组\(f_{i,j}\)表示归并时左右两指针分别指向第i位和第j位的概率
 
  那么g'的转移是:\(g'_{i+j} += g_i*f_{i,j+1}/2\) 发现WA了……
 
  考虑哪里错了,发现当右边的数全部都选的情况,概率并不是\(f_{i,j+1}/2\)
  因为\(f_{i,j+1}\)是保证右指针停在j+1不向上的,但实际情况中右指针已经扫完了,并不需要保证不上跳
  这时的概率变为$\sum_{k=1}^i f_{k,j}/2 $ (这个也需要预处理)
  即:枚举i扫到什么时候时j停下来
 
  最后答案中的位置还需要加上小于\(a_p\)的数的个数

猜你喜欢

转载自www.cnblogs.com/Gkeng/p/11838466.html