zoukankan      html  css  js  c++  java
  • AGC021F Trinity【计数,NTT】

    很久没写博客了,诈个尸(

    题目描述:有一个 (n)(m) 列的黑白表格,定义一个映射 (f:{0,1}^{n imes m} ightarrow ({A_n},{B_m},{C_m})),其中 (A_i) 为第 (i) 行第一个黑格的列号(不存在则为 (m+1)),(B_i) 为第 (i) 列第一个黑格的行号(不存在则为 (n+1)),(C_i) 为第 (i) 列最后一个黑格的行号(不存在则为 (0)),求 (f) 的值域大小。

    数据范围:(nle 8000,mle 200)

    我们设 (f_{i,j}) 表示 (i imes j) 的表格中,每行都有数的答案,那么 (Ans=sum_{i=0}^ninom{n}{i}f_{i,j})

    然后考虑dp,若当前列不新增行,那么 (f_{i,j}(1+i+inom{i}{2}) ightarrow f_{i,j+1})

    如果新增行呢?这就是一个很神奇的思路了。考虑 (B_{j+1}-1,C_{j+1}+1) 和新增的 (k) 行共 (k+2) 行,需要在共 (i+k+2) 行中选出来它们的位置,就是 (inom{i+k+2}{i}),综上dp方程就是

    [f_{i,j}=(inom{i+1}{2}+1)f_{i,j-1}+(i+2)!sum_{k=0}^{i-1}frac{f_{k,j-1}}{k!}frac{1}{(i+2-k)!} ]

    使用 NTT 优化,时间复杂度 (O(nmlog n))

    code

  • 相关阅读:
    UML-如何画操作契约?
    UML-操作契约是什么?
    UML-SSD总结
    UML-如何画SSD?
    UML-SSD-为什么要画SSD?
    UML-SSD-定义
    系统幂等性设计
    UML-领域模型-例子与总结
    UML-领域模型-属性
    UML-领域模型-添加关联和属性
  • 原文地址:https://www.cnblogs.com/AThousandMoons/p/12589281.html
Copyright © 2011-2022 走看看