当前位置: 首页 > news >正文

P6076 [JSOI2015] 染色问题 分析

题目概述

\(n\times m\) 的棋盘,现在需要涂 \(k\) 种颜色上去,需要满足:

  • 每一行至少有一个格子被涂色。
  • 每一列至少有一个格子被涂色。
  • \(k\) 种颜色必须都在这个棋盘上出现。

数据范围:\(1\leq n,m,k\leq 400\)

分析

经典题目,记录一下。

多重容斥的经典题目。

我们考虑枚举 \(i,j,t\) 表示至少有 \(i\) 行格子被涂色,至少有 \(k\) 行格子被涂色,至少有 \(k\) 种颜色涂了。

所以说:

\[ans=\sum_{i=0}^n\sum_{j=0}^m\sum_{t=0}^k(-1)^{i+j+k}C_{n}^iC_{m}^jC_{k}^t F(i,j,t) \]

其中 \(F(i,j,t)\) 表示这种情况下的方案数是多少。

那么对于剩下的行数、列数的格子有 \((n-i)\times (m-j)\) 个。

每个格子有两种选择:

  • 不被涂色。
  • 涂成剩下 \((k-t)\) 种颜色下的一种。

也就是说,每个格子有 \((k-t+1)\) 种选择,所以:

\[F(i,j,t)=(k-t+1)^{(n-i)\times (m-j)} \]

那么就直接这样做就行了。

代码

时间复杂度 \(\mathcal{O}(nmc)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define int long long
#define N 405
using namespace std;
const int mod = 1e9 + 7;
int qpow(int a,int b) {int res = 1;while(b) {if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
int jc[N],inv[N];
int C(int a,int b) {if (a < 0 || b < 0 || a < b) return 0;return jc[a] * inv[b] % mod * inv[a - b] % mod;
}
signed main(){jc[0] = jc[1] = inv[0] = inv[1] = 1;for (int i = 2;i < N;i ++) jc[i] = jc[i - 1] * i % mod,inv[i] = (mod - mod / i) * inv[mod % i] % mod;for (int i = 2;i < N;i ++) inv[i] = inv[i - 1] * inv[i] % mod;int ans = 0,n,m,k;cin >> n >> m >> k;for (int i = 0;i <= n;i ++)for (int j = 0;j <= m;j ++)for (int t = 0;t <= k;t ++) {int xs = ((i + j + t & 1) ? -1 : 1);ans = (ans + (xs * C(n,i) * C(m,j) % mod * C(k,t) % mod * qpow((k - t + 1),(n - i) * (m - j)) % mod + mod) % mod) % mod;}cout << ans;return 0;
}
http://www.rkmt.cn/news/24886.html

相关文章:

  • 2025 年最新货代公司排行榜:国内优质企业权威推荐,助力企业精准挑选靠谱合作伙伴泰国/印尼/马来/日本/东南亚货代公司推荐
  • 2025.10.20——1黄
  • Cisco IOS XRv 9000 Router 25.1.2 MD - 服务提供商边缘虚拟路由器
  • Roslyn 技术解析:如何利用它做代码生成?
  • 深度学习注意力机制新篇章
  • Cisco IOS XRv 9000 Router 24.4.2 MD - 服务提供商边缘虚拟路由器
  • 首款“全国产”高性能GPU发布
  • MIT推出SEAL框架:实现AI自我迭代新突破
  • 231233
  • https://img2024.cnblogs.com/blog/3001825/202510/3001825-20251020014716729-439844091.png
  • golang unique包和字符串内部化
  • 永久暂停window10更新,不想更新到window11
  • 算法第二章作业
  • RaspberryPi 个人服务搭建
  • tryhackme-预安全-网络如何工作-网站如何工作-11
  • 2025塑料托盘优质厂家推荐,力森塑业科技多元化产品满足各类需求!
  • Drive Snapshot
  • Python接入A股level2千档盘口和逐笔委托
  • 今天搞了新的回归,不显著
  • shell编程学习笔记006之select循环
  • 线程--线程生命周期、Synchronized
  • tryhackme-预安全-网络如何工作-DNS 详细信息-09
  • [Linux] 开启本地网络转发功能(IPv4)
  • 应用安全 --- 安卓加固 之 vdex转dex
  • 大物实验
  • 又数据结构
  • 【机器学习】监督学习 —— 决策树(Decision Tree) - 指南
  • https代理服务器(五)换电脑
  • 编程指北的 C++
  • 物品复活软件开发记录 - CelestialZ