【题解】JSOI2015染色问题
好像这个容斥还是明显的。一共有三个要求,可以用组合数先满足一个,再用容斥解决剩下的两个维。(反正这题数据范围这么小,随便乱搞都可以)。用 \(a[k][i]\) 表示使用 \(k\) 种颜色,至少有 \(i\) 列没有染色的方案数,可以容斥预处理得到使用 \(k\) 种颜色染色使得每行每列均被染色的方案数。然后再容斥一下保证每种颜色都用上就可以了。
#include <bits/stdc++.h>
using namespace std;
#define maxn 500
#define CNST 450
#define int long long
#define mod 1000000007
int n, m, K, ans, f[maxn];
int S[maxn], C[maxn][maxn]; int read()
{
int x = , k = ;
char c; c = getchar();
while(c < '' || c > '') { if(c == '-') k = -; c = getchar(); }
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * k;
} int Qpow(int x, int timer)
{
int base = ; if(timer < ) return ;
for(; timer; timer >>= , x = x * x % mod)
if(timer & ) base = base * x % mod;
return base;
} void Up(int &x, int y) { x = (x + y) % mod; }
void Pre()
{
for(int i = ; i < CNST; i ++) C[i][] = ;
for(int i = ; i < CNST; i ++)
for(int j = ; j < CNST; j ++)
Up(C[i][j], (C[i - ][j - ] + C[i - ][j]) % mod);
} int Get(int X)
{
int ret = ;
for(int i = ; i <= m; i ++)
S[i] = Qpow((Qpow(X + , m - i) - ), n) % mod;
for(int i = ; i <= m; i ++)
Up(ret, C[m][i] * ((i & ) ? -S[i] : S[i]) % mod);
return ret;
} signed main()
{
n = read(), m = read(), K = read();
Pre(); for(int i = ; i <= K; i ++) f[K - i] = Get(i);
for(int i = ; i <= K; i ++)
Up(ans, C[K][i] * ((i & ) ? -f[i] : f[i]) % mod);
printf("%lld\n", (ans + mod) % mod);
return ;
}
【题解】JSOI2015染色问题的更多相关文章
- 【BZOJ4487】[JSOI2015]染色问题(容斥)
[BZOJ4487][JSOI2015]染色问题(容斥) 题面 BZOJ 题解 看起来是一个比较显然的题目? 首先枚举一下至少有多少种颜色没有被用到过,然后考虑用至多\(k\)种颜色染色的方案数. 那 ...
- bzoj4487[Jsoi2015]染色问题 容斥+组合
4487: [Jsoi2015]染色问题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 211 Solved: 127[Submit][Status ...
- BZOJ4487 [Jsoi2015]染色问题
BZOJ4487 [Jsoi2015]染色问题 题目描述 传送门 题目分析 发现三个限制,大力容斥推出式子是\(\sum_{i=0}^{N}\sum_{j=0}^{M}\sum_{k=0}^{C}(- ...
- 【bzoj4487】[Jsoi2015]染色问题 容斥原理
题目描述 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格.现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定: 1. 棋盘的每一个小方格既可以染色(染成C种颜色中 ...
- [JSOI2015]染色游戏
Description 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格. 现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定: 1.棋盘的每一个小方格既可以染色(染 ...
- [bzoj4487][Jsoi2015]染色_容斥原理
染色 bzoj-4487 Jsoi-2015 题目大意:给你一个n*m的方格图,在格子上染色.有c中颜色可以选择,也可以选择不染.求满足条件的方案数,使得:每一行每一列都至少有一个格子被染色,且所有的 ...
- 2019.02.09 bzoj4487: [Jsoi2015]染色问题(容斥原理)
传送门 题意简述: 用ccc中颜色给一个n∗mn*mn∗m的方格染色,每个格子可涂可不涂,问最后每行每列都涂过色且ccc中颜色都出现过的方案数. 思路: 令fi,j,kf_{i,j,k}fi,j,k ...
- 【BZOJ4487】[JSOI2015] 染色问题(高维容斥)
点此看题面 大致题意: 有一个\(n*m\)的矩形,先让你用\(C\)种颜色给它染色.每个格子可染色可不染色,但要求每行每列至少有一个小方格被染色,且每种颜色至少出现一次.求方案数. 高维容斥 显然题 ...
- bzoj 4487: [Jsoi2015]染色问题
先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...
随机推荐
- int str input的运用
- UGUI实现不规则区域点击响应
UGUI实现不规则区域点击响应 前言 大家吼啊!最近工作上事情特别多,没怎么打理博客.今天无意打开cnblog才想起该写点东西了.今天给大家讲一个Unity中不规则区域点击响应的实现方法,使用UGUI ...
- C++可继承的单例基类模板
目录 一.介绍 二.代码 三.关键处 五.参考资料 一.介绍 最近在写一个项目,其中用到好几个单例,类本身的设计不是很复杂,但是如果每个都写一遍单例又觉得有点冗余:所以查资料写了一个单例基类模板,只要 ...
- SSH 报错解决方法记录汇总
SSH 密钥签名失败 情景: 使用 SSH 密钥验证身份时 报错: sign_and_send_pubkey: signing failed: agent refused operation 环境: ...
- PHP中的__toString() 是什么东西
__toString() 是魔术方法的一种,具体用途是当一个对象被当作字符串对待的时候,会触发这个魔术方法 以下说明摘自PHP官方手册 public string __toString ( void ...
- 解读Python编程中的命名空间与作用域
变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典.一个Python表达式可以访问局部命名空间和全局命名空间里的变量.如果一个局部变量和一个全局 ...
- OGG 跳过事务(转)
http://blog.chinaunix.net/uid-26190993-id-3434074.html 在OGG运行过程中,通常会因为各种各样的原因导致容灾端的REPLICAT进程ABEN ...
- flex布局时,内容区域自适应高度
页面元素高度固定,中间的元素需要撑满屏幕,或者内容多时显示滚动条时,我们要把父元素设置为height:100vh <div class="parent"> <di ...
- “Hello World!”团队第七周召开的第五次会议
今天是我们团队“Hello World!”团队第七周召开的第五次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.代码 一 ...
- C#窗体——四则运算
用户需求:程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以选择四则运算中的一种用户可以结束程序的运行,并显示统计结果.在此 ...