给出一个n×m,n,m≤4e2n×m,n,m\leq4e2n×m,n,m≤4e2的矩阵,并且有c≤4e2c\leq4e2c≤4e2种颜色,对于每一个小方格,你可以任选一个给它染色。给出条件:每个小方格可以被染色也可以不被染色,但是要求每一行每一列都至少有一个小方格要被染色。并且每种颜色都至少要出现一次,求总方案数。
考虑乘法原理和容斥原理,枚举没有被染色的行,没有被染色的列以及没有被用的颜色。Ans=∑i=0n∑j=0m∑k=0c(−1)i+j+kCniCmjCck(c−k+1)(n−i)(m−j)Ans=\sum_{i=0}^{n}\sum_{j=0}^{m}\sum_{k=0}^{c}(-1)^{i+j+k}C_{n}^{i}C_{m}^{j}C_{c}^{k}(c-k+1)^{(n-i)(m-j)}Ans=∑i=0n​∑j=0m​∑k=0c​(−1)i+j+kCni​Cmj​Cck​(c−k+1)(n−i)(m−j)
考虑ccc种颜色至少出现一次,就是000种颜色没出现,考虑F(x)F(x)F(x)是至少xxx种颜色没出现。容斥∑i=0c(−1)iCciF(i)\sum_{i=0}^{c}(-1)^iC_{c}^{i}F(i)∑i=0c​(−1)iCci​F(i)。此时可以得到最多出现c−xc-xc−x种颜色。
同理枚举iii行,jjj列可得答案。后面的式子是最多用c−kc-kc−k种颜色染(n−i)(n-i)(n−i)行,(m−j)(m-j)(m−j)列的方案数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll INF=LONG_LONG_MAX;
const int N=4e2+7;
const int mod=1e9+7;
ll C[N][N];
ll f[N*N];
int main() {int n,m,c;scanf("%d%d%d",&n,&m,&c);for(int i=1;i<=400;i++) {C[i][0]=C[i][i]=1;for(int j=1;j<i;j++) {C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;}}ll ans=0;for(int k=0;k<=c;k++) {f[0]=1;for(int i=1;i<=m*n;i++) f[i]=(f[i-1]*(c-k+1))%mod;for(int i=0;i<=n;i++) {for(int j=0;j<=m;j++) {ll x=C[n][i]*C[m][j]%mod*C[c][k]%mod*f[(n-i)*(m-j)]%mod;if((i+j+k)&1) ans=(ans-x+mod)%mod;else ans=(ans+x)%mod;}}}printf("%lld\n",ans); return 0;
}

BZOJ4487 [JSO12015] 染色问题 容斥原理相关推荐

  1. BZOJ4487 JSOI2015染色问题(组合数学+容斥原理)

    逐个去除限制.第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数-- 然后是限制二.同样可以容斥,即恰好选n行的方案数=至 ...

  2. 格子染色(容斥原理)

    第一次把公式自己推出来了当然看了百度百科后,真是激动呢~~~ 题目描述 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格.现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以 ...

  3. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  4. kinectfusion解析_2019/02/09 对于KinectFusion 的理解

    网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化. 在此就不多介绍了. KinectFusion 提供了非常基础的用RGB-D 相机实现的 Den ...

  5. 【组合数学:三】容斥原理

    [组合数学:三] 容斥原理及其应用 容斥原理 带重复的组合 错位排列 带有禁止位置的排列 莫比乌斯反演 容斥原理及其应用 容斥原理 之前我们已经见过,对集合中对象个数的间接计数要比对这些对象直接计数容 ...

  6. 组合数学(排列组合,容斥原理,数论定理)

    组合数学的学习 排列组合 一.排列组合基础 二.排列组合练习题 容斥原理 定理学习 例题练习 例题1: [ 1 , n ] [1,n] [1,n] 中有多少个数能被 x 或 y 整除 例题2: [ 1 ...

  7. [Codeforces 997C]Sky Full of Stars(排列组合+容斥原理)

    [Codeforces 997C]Sky Full of Stars(排列组合+容斥原理) 题面 用3种颜色对\(n×n\)的格子染色,问至少有一行或一列只有一种颜色的方案数.\((n≤10^6)\) ...

  8. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

  9. [BZOJ4033][HAOI2015]树上染色

    4033: [HAOI2015]树上染色 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2108  Solved: 901 [Submit][Sta ...

最新文章

  1. java jtable 单元格合并_JTable 单元格合并 【转】
  2. 职业经理人的核心技能
  3. 第二课unit2 控制对文件的访问
  4. 为什么在把多维数组传递给函数时必须要指定除第一维之外的其他维
  5. Unity4.6新UI系统初探(uGUI)
  6. SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
  7. python numpy.linspace() 使用介绍
  8. bgp协议 怎么知道相邻路由的ip地址_BGP的名词解释
  9. Spring源码:AOP转文
  10. 关于zabbix_get 的介绍
  11. 【JAVA 第三章 流程控制语句】课后习题 键入日期输入星期几
  12. CCF 201403-2 窗口
  13. 比Excel还简单,跳槽数据分析岗必会的工具
  14. html css . doc,html+CSS基础.doc
  15. 数据结构上机实践第七周项目3 - 负数把正数赶出队列
  16. ELK性能优化实战总结:java私塾初级模拟银源代码
  17. 清华大学软件学院考研经验分享
  18. 百度网盘mac损害计算机,百度网盘Mac版和Mac同步盘有哪些区别?百度网盘Mac版常见问题解答...
  19. win7如何设置以管理员身份运行程序
  20. Power BI中的透视列和逆透视

热门文章

  1. 从软件保护到软件授权
  2. 如何做到四位验证码更简洁的生成?
  3. Redis常用数据结构及其场景归纳
  4. 多元微分学小结(4):隐函数存在定理的推广与函数相关
  5. 《孙子兵法》十三篇注译(11--地形篇)
  6. 小白学NLP学习笔记-入门
  7. 如何快速高效的刷Leetcode
  8. mysql 用户名唯一,mysql用户名和密码(mysql忘记用户名密码)
  9. 抖音创作者信用分:如何提升信用等级,获取更多机会
  10. python(2) 简单字符串