好像这个容斥还是明显的。一共有三个要求,可以用组合数先满足一个,再用容斥解决剩下的两个维。(反正这题数据范围这么小,随便乱搞都可以)。用 \(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染色问题的更多相关文章

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

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

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

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

  3. BZOJ4487 [Jsoi2015]染色问题

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

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

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

  5. [JSOI2015]染色游戏

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

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

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

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

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

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

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

  9. bzoj 4487: [Jsoi2015]染色问题

    先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...

随机推荐

  1. java高并发之锁的使用以及原理浅析

    锁像synchronized同步块一样,是一种线程同步机制.让自Java 5开始,java.util.concurrent.locks包提供了另一种方式实现线程同步机制——Lock.那么问题来了既然都 ...

  2. Mysql Mariadb 密码问题

    mysql密码遗忘和登陆报错问题   mysql登录密码忘记,其实解决办法很简单,只需要在mysql的主配置文件my.cnf里添加一行“跳过授权表”的参数选择即可! 在my.cnf中添加下面一行:[r ...

  3. eclipse xml文件中按alt+/没有提示信息

    转载地址:http://blog.sina.com.cn/s/blog_972ddc1b01012mmh.html 今天要写这篇博文是因为遇到这样的不是技术的问题,但找到问题根源再解决这个问题又花费很 ...

  4. redis使用哈希槽实现集群

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  5. 在Web Page中包含PHP代码

    PHP代码可以出现在Web Page的任何位置,甚至在HTML的标签里面也可以.有4中方式在Web Page中包含PHP代码: 使用<?php ... ?>标签 <!doctype ...

  6. Scrum立会报告+燃尽图(十二月六日总第三十七次):程序功能逻辑优化

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...

  7. servlet几个常用的方法

    servlet继承了HTTPServlet所以可以重写父类的方法,下面一 一介绍方法Dopost DoGet 比较常用不再介绍. 一.Init(),和Init(ServletConfig config ...

  8. 学习Web Service、wcf、webapi的区别

    csdn:关于wcf,webservice,webapi或者其他服务或者接口有什么区别. wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们 ...

  9. DPDK helloworld 源码阅读

    在 DPDK Programmer's Guides 中的 EAL 一篇中有一个图可以很清晰地看到一个DPDK的应用程序的大致执行思路: 初始化检查CPU支持.微架构配置等完成后,执行main()函数 ...

  10. TCP 连接管理

    实验代码和内容:https://github.com/ZCplayground/Understanding-Unix-Linux-Programming/tree/master/11.socket 明 ...