bzoj4487[Jsoi2015]染色问题 容斥+组合
4487: [Jsoi2015]染色问题
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 211 Solved: 127
[Submit][Status][Discuss]
Description
棋盘是一个n×m的矩形,分成n行m列共n*m个小方格。现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定:
1. 棋盘的每一个小方格既可以染色(染成C种颜色中的一种) ,也可以不染色。
2. 棋盘的每一行至少有一个小方格被染色。
3. 棋盘的每一列至少有一个小方格被染色。
4. 种颜色都在棋盘上出现至少一次。
以下是一些将3×3棋盘染成C = 3种颜色(红、黄、蓝)的例子:
.png)
请你求出满足要求的不同的染色方案总数。只要存在一个位置的颜色不同,
即认为两个染色方案是不同的
Input
输入只有一行 3 个整数n,m,c。1 < = n,m,c < = 400
Output
输出一个整数,为不同染色方案总数。因为总数可能很大,只需输出总数
mod 1,000,000,007的值。
Sample Input
2 2 3
Sample Output
60
HINT
Source
由一维容斥推到三维容斥。。
很诡异,并不是很懂,感性理解
枚举ijk,表示占据i行j列k个颜色或不涂色任意选
容斥就好了。
这样推出式子是O(N^3),根据二项式定理可以优化至O(N^2*log2(M))
看blog
http://blog.csdn.net/nirobc/article/details/51064832
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 403
#define p 1000000007
#define LL long long
using namespace std;
int n,m,c;
LL C[N][N];
LL quickpow(int num,int x)
{
LL ans=,base=num;
while (x) {
if (x&) ans=ans*base%p;
x>>=;
base=base*base%p;
}
return ans;
}
int main()
{
scanf("%d%d%d",&n,&m,&c);
for (int i=;i<=;i++) C[i][]=;
for (int i=;i<=;i++)
for (int j=;j<=i;j++)
C[i][j]=(C[i-][j]+C[i-][j-])%p;
LL ans=;
for (int k=;k<=c;k++) {
LL x=;
for (int i=n;i>=;i--){
LL tot=;
for (int j=m;j>=;j--) {
int t=i+j+k;
LL now=C[n][i]*C[m][j]%p*C[c][k]%p*tot%p;
if (t&) ans-=now;
else ans+=now;
tot=tot*x%p;
}
x=x*(c-k+)%p;
ans%=p;
}
}
printf("%lld\n",(ans%p+p)%p);
}
bzoj4487[Jsoi2015]染色问题 容斥+组合的更多相关文章
- [BZOJ4487][JSOI2015]染色问题(容斥)
一开始写了7个DP方程,然后意识到这种DP应该都会有一个通式. 三个条件:有色行数为n,有色列数为m,颜色数p,三维容斥原理仍然成立. 于是就是求:$\sum_{i=0}^{n}\sum_{j=0}^ ...
- BZOJ4487 [Jsoi2015]染色问题
BZOJ4487 [Jsoi2015]染色问题 题目描述 传送门 题目分析 发现三个限制,大力容斥推出式子是\(\sum_{i=0}^{N}\sum_{j=0}^{M}\sum_{k=0}^{C}(- ...
- 【题解】[HAOI2018]染色(NTT+容斥/二项式反演)
[题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\d ...
- LOJ.6160.[美团CodeM初赛 RoundA]二分图染色(容斥 组合)
题目链接 \(Description\) 求在\(2n\)个点的完全二分图(两边各有\(n\)个点)上确定两组匹配,使得两个匹配没有交集的方案数. \(n\leq10^7\). \(Solution\ ...
- [bzoj4487][Jsoi2015]染色_容斥原理
染色 bzoj-4487 Jsoi-2015 题目大意:给你一个n*m的方格图,在格子上染色.有c中颜色可以选择,也可以选择不染.求满足条件的方案数,使得:每一行每一列都至少有一个格子被染色,且所有的 ...
- bzoj4767两双手 容斥+组合
4767: 两双手 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 684 Solved: 208[Submit][Status][Discuss] ...
- 2019.02.09 bzoj4487: [Jsoi2015]染色问题(容斥原理)
传送门 题意简述: 用ccc中颜色给一个n∗mn*mn∗m的方格染色,每个格子可涂可不涂,问最后每行每列都涂过色且ccc中颜色都出现过的方案数. 思路: 令fi,j,kf_{i,j,k}fi,j,k ...
- [acmm week12]染色(容斥定理+组合数+逆元)
1003 染色 Time Limit: 1sec Memory Limit:256MB Description 今天离散数学课学了有关树的知识,god_v是个喜欢画画的人,所以他 ...
- BZOJ4487 JSOI2015染色问题(组合数学+容斥原理)
逐个去除限制.第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数…… 然后是限制二.同样可以容斥,即恰好选n行的方案数=至 ...
随机推荐
- 使用Putty连接Amazon EC2 Instance
Amazon的EC2中,默认是不允许使用用户名和密码直接连接Instance的,而是通过AWS (Amazon Web Service)提供的证书.在第一次使用EC2的时候,AWS会要求你创建一个证书 ...
- win10 系统右键菜单不显示文字(只有小图标)修复方法
如下图,win10点击鼠标右键调出菜单时,看不到菜单的文字,只显示了小图标. 解决方法: Cortana 搜索 cmd ,看到 命令提示符,右键,选择 以管理员身份运行. 在命令提示符里输入以下命令, ...
- github提交代码到服务器的方法
第一种情况,没有冲突:1.git add .//进入到center的项目下将本地文件打包的意思2.git pull origin dev//将服务器的代码下载到本地如果是最新的会提示Already u ...
- spring MVC框架入门(外加SSM整合)
spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...
- GIT入门笔记(7)- 修改文件并向版本库提交
1.修改文件vi readme.txt git status 发现被修改的文件列表git diff readme.txt 2.git add readme.txt git status --注意gi ...
- 爬虫必备 User-Agent 列表
USER_AGENTS = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR ...
- vue2.0项目引入element-ui
在项目中,为了方便我们工作和开发效率,常常引入一些框架来帮助我们完成高效的工作,今天我们就用vue来搭建一下框架,并且引入element-ui这个框架.安装流程也是我从失败中摸索到的,希望能帮助大家. ...
- Codeforces Round #426 (Div. 2)
http://codeforces.com/contest/834 A. The Useless Toy 题意: <,>,^,v这4个箭头符号,每一个都可以通过其他及其本身逆时针或者顺时针 ...
- SpringBoot(五):@ConfigurationProperties配置参数绑定
在springmvc或其他ssh框架中如果我们要实现一个配置参数的加载,需要使用代码实现读取properties文件等操作,或者需要使用其他属性@value(name="username&q ...
- Hibernate(十一):映射继承关系的三种方案
背景: 在一些项目中,会采用集成的关系来定义数据库实体类,比如:人(Person)与学生(Student),学生来源与人,所以人的基本属性学生也拥有:但学生有的一些属性,人就不具有.人与学生之间很显然 ...