bzoj 4487/ jsoi 2015 染色问题(容斥原理

本文介绍了一道关于棋盘染色的问题,其中棋盘是n×m的矩形,需要使用C种颜色进行染色,每个小方格可以染色或不染色,每行和每列至少有一个染色的小方格,每种颜色至少使用一次。通过容斥原理求解满足条件的不同染色方案总数,并给出了相应的代码实现。
摘要由CSDN通过智能技术生成

Description

棋盘是一个n×m的矩形,分成n行m列共n*m个小方格。
现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定:
1.棋盘的每一个小方格既可以染色(染成C种颜色中的一种),也可以不染色。
2.棋盘的每一行至少有一个小方格被染色。
3.棋盘的每一列至少有一个小方格被染色。
4.种颜色都在棋盘上出现至少一次。
以下是一些将3×3棋盘染成C=3种颜色(红、黄、蓝)的例子:
在这里插入图片描述

请你求出满足要求的不同的染色方案总数。只要存在一个位置的颜色不同,
即认为两个染色方案是不同的

Input

输入只有一行 3 个整数n,m,c。1 < = n,m,c < = 400

Output

输出一个整数,为不同染色方案总数。
因为总数可能很大,只需输出总数mod 1,000,000,007的值。

Sample Input

2 2 3

Sample Output

60

分析

这道题有三个限制条件:每行要涂,每列要涂,每种颜色要用上。考虑它的反面:有行没涂,有列没涂,有颜色没用,利用这一点来容斥。记 f ( i , j , k ) f(i,j,k) f(i,j,k) 表示特定的 i i i 行没涂, j j j 列没涂, k k k 种颜色没用的方案数。显然 f ( i , j , k ) = ( c − k ) ( n − i ) ∗ ( m − j ) f(i,j,k) = (c - k)^{(n-i)*(m-j)} f(i,j,k)=(ck

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值