JZOJ4779 【GDOI2017模拟9.14】鞍点(OICamp 2016 Day 5 T1) 计数问题
来源:互联网 发布:唯品会抢购软件 编辑:程序博客网 时间:2024/06/05 18:34
题目大意
现在满足要求的带权矩阵定义为至少有一个鞍点的矩阵。鞍点定义为在同一行和同一列都是严格最大的格点。
先在要求你求出大小为
解题思路
这种计数问题的关键就是设出不会算重算漏的状态。我们可以设状态
那么我们考虑
绿色部分为已已经放好的部分
那么最后的转移方程就是:
最后对于每个已经更新完的
容斥原理:当
当
程序
//YxuanwKeith#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 2005;int N, M, K, Mo, Min, Max, C[MAXN][MAXN], Fac[MAXN * MAXN], F[MAXN][11], Pow[11][MAXN * MAXN];void Prepare() { C[0][0] = 1; for (int i = 1; i <= Max; i ++) { C[i][0] = 1; for (int j = 1; j <= Max; j ++) C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % Mo; } Fac[0] = 1; for (int i = 1; i <= N * M; i ++) Fac[i] = 1ll * Fac[i - 1] * i % Mo; Pow[0][0] = 1; for (int i = 1; i <= K; i ++) { Pow[i][0] = 1; for (int j = 1; j <= N * M; j ++) Pow[i][j] = 1ll * Pow[i][j - 1] * i % Mo; }}void Solve() { F[0][0] = 1; for (int i = 0; i <= Min; i ++) for (int j = 0; j < K; j ++) { if (F[i][j] == 0) continue; for (int x = 0; x <= Min - i; x ++) F[i + x][j + 1] = (1ll * F[i + x][j + 1] + 1ll * F[i][j] * C[N - i][x] % Mo * C[M - i][x] % Mo * Fac[x] % Mo * Pow[j][x * (N - i) + x * (M - i) - x * x - x] % Mo) % Mo; } int Ans = 0; for (int i = 1; i <= Min; i ++) Ans = ((Ans + ((i & 1) ? 1ll : -1ll) * F[i][K] % Mo * Pow[K][(N - i) * (M - i)] % Mo) + Mo) % Mo; printf("%d\n", Ans);}int main() { scanf("%d%d%d%d", &N, &M, &K, &Mo); Min = min(N, M), Max = max(N, M); Prepare(); Solve();}
1 0
- JZOJ4779 【GDOI2017模拟9.14】鞍点(OICamp 2016 Day 5 T1) 计数问题
- [OICamp 2016 Day 5/JZOJ4779]鞍点
- JZOJ4779. 【GDOI2017模拟9.14】鞍点
- JZOJ4780 【GDOI2017模拟9.14】三角形 (OICamp 2016 Day 5 T2) 可证明复杂度的有技巧暴力
- [OICamp 2016 Day5A]鞍点
- [OICamp 2016 Day 1][JZOJ4773]凸包
- 【NOIP 模拟题】[山东多校联合模拟赛 day1 T1] 矩形计数(暴力)
- noip2013 计数问题 (模拟)
- 鞍点问题(c++)
- 【GDOI2017模拟12.9】完全背包问题
- [NOIP 2015] Day.1 T1 神奇的幻方 [模拟]
- 济南学习 Day 5 T1 am
- 济南学习 Day 5 T1 晚
- 济南学习 Day 5 T1 pm
- <互测 day> 11.6 T1 谜团 (mituan)
- OICamp 2016 Day2 路径数
- [GDOI2017模拟]最大值(贪心+递推)
- GDOI2017模拟 第一场(4.11~4.13)
- 理解box-sizing属性border-box,content-box
- Kattis <Simon Says>
- 深入剖析装箱与拆箱机制
- stm32低功耗实验之待机模式
- 東京音頭 (东京音头) 歌词翻译
- JZOJ4779 【GDOI2017模拟9.14】鞍点(OICamp 2016 Day 5 T1) 计数问题
- 科普“智能导航”--整理自大疆工程师
- git无法pull仓库refusing to merge unrelated histories
- python的传值与引用
- 内存优化
- 字符串函数
- OpenCV 图像对比度、亮度值调整示例程序
- C++学习笔记-递归函数
- light oj 1211 - Intersection of Cubes (立方体的交集的体积)