zoukankan      html  css  js  c++  java
  • [CQOI2011]放棋子

    想到了50%吧算是。

    f[i][j][k]表示,前i种,占了j行k列。方案数。

    发现,转移要处理:“用c个棋子,占据n行m列”的方案数。

    设g[i][j][k]表示,i行j列用k个棋子占的方案数。直接处理复杂度爆炸。

    然后我就mengbier了。

    考虑大力容斥:

    也即,总方案数-不合法方案数(不能覆盖完全)

    g[i][j][k]=C(i*j,k)-∑l∑r:g[l][r][k]*C(i,l)*C(j,r) (i*j>=k&&l<=i&&j<=r)

    显然由于l,r不同,不会减多。

    发现不用统计所有的 k,只用统计那c个即可。

    然后f[i][j][k]的转移就顺理成章了。

    复杂度:O(n^2m^2c)

    总结:

    没有想到容斥那一步。。。

    正难则反。

    最关键的是,不用k之间的递推,所以,第三维看似是k,其实是c(10而已)

  • 相关阅读:
    Intern Day15
    Intern Day15
    Intern Day15
    Intern Day15
    Intern Day15
    Intern Day14
    Intern Day14
    纯CSS序列号
    屌丝、高富帅、文艺青年、土豪的区别
    什么是文艺
  • 原文地址:https://www.cnblogs.com/Miracevin/p/9845966.html
Copyright © 2011-2022 走看看