题目

看到这个限制条件有点多,我们就一直容斥好了

先容斥颜色,我们枚举至少不用\(i\)种颜色

再容斥列,我们枚举至少不用\(j\)列

最后容斥行,枚举至少不用\(k\)行

容斥系数显然是\((-1)^i,(-1)^j,(-1)^k\),我们从\(c\)种颜色里选出\(i\)种不用,\(m\)列里选出\(j\)列不凃,\(n\)行里选出\(k\)行不凃,分别是\(\binom{c}{i},\binom{m}{j},\binom{n}{k}\)

对于剩下的\((m-j)(n-k)\)个格子,每个格子我们有\(c-i\)种颜色可以涂,或者直接空着,所以有\(c-i+1\)种选择

于是我们的答案就是

\[\sum_{i=0}^c\sum_{j=0}^m\sum_{k=0}^n(-1)^{i+j+k}\binom{c}{i}\binom{m}{j}\binom{n}{k}\times (c-i+1)^{(m-j)(n-k)}
\]

里面用快速幂算那个东西会\(T\)的,我们乱搞一下就能优化成\(O(nmc)\)了

代码

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define re register
  6. #define LL long long
  7. inline int read() {
  8. char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
  9. while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
  10. }
  11. const int mod=1e9+7;
  12. const int maxn=405;
  13. int n,m,c;
  14. int fac[maxn],inv[maxn],ifac[maxn];
  15. inline int C(int n,int m) {
  16. if(m>n) return 0;
  17. return 1ll*fac[n]*ifac[n-m]%mod*ifac[m]%mod;
  18. }
  19. inline int ksm(int a,int b) {
  20. int S=1;
  21. while(b) {if(b&1) S=1ll*S*a%mod;b>>=1;a=1ll*a*a%mod;}
  22. return S;
  23. }
  24. int main() {
  25. n=read(),m=read(),c=read();
  26. inv[1]=1,fac[0]=1,ifac[0]=1;
  27. for(re int i=1;i<=400;i++) fac[i]=1ll*fac[i-1]*i%mod;
  28. for(re int i=2;i<=400;i++) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
  29. for(re int i=1;i<=400;i++) ifac[i]=1ll*ifac[i-1]*inv[i]%mod;
  30. int ans=0;
  31. for(re int i=0;i<=c;i++)
  32. for(re int j=0;j<=m;j++) {
  33. int now=1,t=ksm(c-i+1,m-j);
  34. for(re int k=n;k>=0;--k) {
  35. int tot=1ll*C(c,i)*C(m,j)%mod*C(n,k)%mod*now%mod;
  36. if((i+j+k)&1) ans=(ans-tot+mod)%mod;
  37. else ans=(ans+tot)%mod;
  38. now=1ll*now*t%mod;
  39. }
  40. }
  41. printf("%d\n",ans);
  42. return 0;
  43. }

[Jsoi2015]染色问题的更多相关文章

  1. bzoj4487[Jsoi2015]染色问题 容斥+组合

    4487: [Jsoi2015]染色问题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 211  Solved: 127[Submit][Status ...

  2. BZOJ4487 [Jsoi2015]染色问题

    BZOJ4487 [Jsoi2015]染色问题 题目描述 传送门 题目分析 发现三个限制,大力容斥推出式子是\(\sum_{i=0}^{N}\sum_{j=0}^{M}\sum_{k=0}^{C}(- ...

  3. 【BZOJ4487】[JSOI2015]染色问题(容斥)

    [BZOJ4487][JSOI2015]染色问题(容斥) 题面 BZOJ 题解 看起来是一个比较显然的题目? 首先枚举一下至少有多少种颜色没有被用到过,然后考虑用至多\(k\)种颜色染色的方案数. 那 ...

  4. [bzoj4487][Jsoi2015]染色_容斥原理

    染色 bzoj-4487 Jsoi-2015 题目大意:给你一个n*m的方格图,在格子上染色.有c中颜色可以选择,也可以选择不染.求满足条件的方案数,使得:每一行每一列都至少有一个格子被染色,且所有的 ...

  5. 2019.02.09 bzoj4487: [Jsoi2015]染色问题(容斥原理)

    传送门 题意简述: 用ccc中颜色给一个n∗mn*mn∗m的方格染色,每个格子可涂可不涂,问最后每行每列都涂过色且ccc中颜色都出现过的方案数. 思路: 令fi,j,kf_{i,j,k}fi,j,k​ ...

  6. 【题解】JSOI2015染色问题

    好像这个容斥还是明显的.一共有三个要求,可以用组合数先满足一个,再用容斥解决剩下的两个维.(反正这题数据范围这么小,随便乱搞都可以).用 \(a[k][i]\) 表示使用 \(k\) 种颜色,至少有 ...

  7. 【bzoj4487】[Jsoi2015]染色问题 容斥原理

    题目描述 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格.现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定: 1.  棋盘的每一个小方格既可以染色(染成C种颜色中 ...

  8. 【BZOJ4487】[JSOI2015] 染色问题(高维容斥)

    点此看题面 大致题意: 有一个\(n*m\)的矩形,先让你用\(C\)种颜色给它染色.每个格子可染色可不染色,但要求每行每列至少有一个小方格被染色,且每种颜色至少出现一次.求方案数. 高维容斥 显然题 ...

  9. [JSOI2015]染色游戏

    Description 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格. 现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定: 1.棋盘的每一个小方格既可以染色(染 ...

随机推荐

  1. [AHOI2005] 航线规划

    Description 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系--一个巨大的由千百万星球构成的Samuel星系. 星际空间站的Samuel ...

  2. MySQL之单表查询

    一.关键字的执行优先级 1,from:找到表 2,where:拿着where指定的约束条件,去文件/表中取出一条条数据 3,group by:将取出的一条条数据进行分组,如果没有group by,则整 ...

  3. SQL 行列转换数据转换为字符串

    行列转换,将列数据转换为字符串输出 ) SET @center_JZHW = ( SELECT DISTINCT STUFF( ( SELECT ',' + ce_code FROM ap_cente ...

  4. 新建 .NET Core 控制台项目

    1. 安装 .NET Core SDK 1.0 参考微软官方网站 https://www.microsoft.com/net/download/windows 2. 打开命令提示符:输入以下代码验证S ...

  5. ssm简单整合(注释方法)

    1.创建web工程,选择web.xml文件,并导入相关jar包(使用的spring4.0以上版本,) 2.配置web.xml文件,包括spring.xml,springMVC.xml的加载映射,核心操 ...

  6. The Most Simple Introduction to Hypothesis Testing

    https://www.youtube.com/watch?v=UApFKiK4Hi8

  7. 关于python访问字典的方法

    def stu( **kwargs): # 在函数体内对于kwargs的使用不用带星号 print("大家好,我为大家简单自我介绍以下:") print(type(kwargs)) ...

  8. 2018-01-11 Antlr4的分析错误处理

    中文编程知乎专栏原文地址 (前文通用型的中文编程语言探讨之一: 高考, 即使是这"第一步", 即使一切顺利达到列出的功能恐怕也需要个人数年的业余时间. 看到不少乎友都远更有资本和实 ...

  9. express koa koa2 优缺点分析

    发布日期 2009年6月26日,TJ 提交 Express 第一次 commit.目前拥有 5000 多次 commit. 2013年8月17日, TJ 只身一人提交 Koa 第一次 commit.目 ...

  10. 【图解】Web前端实现类似Excel的电子表格

    本文将通过图解的方式,使用纯前端表格控件 SpreadJS 来一步一步实现在线的电子表格产品(例如可构建Office 365 Excel产品.Google的在线SpreadSheet). 工具简介: ...