CSP模拟赛 Matrix(DP)
2024-08-27 08:31:00
题面
求出满足以下条件的 n*m 的 01 矩阵个数:
(1)第 i 行第 1~li 列恰好有 1 个 1。
(2)第 i 行第 ri~m 列恰好有 1 个 1。
(3)每列至多有 1 个 1。
n,m<=3000
题解
nb
CODE
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3005;
const int mod = 998244353;
int n, m, f[MAXN][MAXN], sl[MAXN], sr[MAXN];
int main () {
scanf("%d%d", &n, &m);
for(int i = 1, l, r; i <= n; ++i) scanf("%d%d", &l, &r), ++sl[l], ++sr[r];
for(int i = 1; i <= m; ++i) sl[i] += sl[i-1], sr[i] += sr[i-1];
f[0][0] = 1;
for(int i = 1; i <= m; ++i) {
f[i][0] = f[i-1][0];
for(int j = 1; j <= i; ++j)
f[i][j] = (f[i-1][j] + 1ll * f[i-1][j-1] * (sr[i]-(j-1))) % mod;
for(int j = sl[i-1]; j < sl[i]; ++j)
for(int k = 0; k <= i; ++k)
f[i][k] = 1ll * f[i][k] * (i-j - k) % mod;
}
printf("%d\n", f[m][n]);
}
最新文章
- 什么是 kNN 算法?
- android控件库(2)-仿Google Camera 的对焦效果
- hdu 3987 Harry Potter and the Forbidden Forest 求割边最少的最小割
- Sql Server建立链接服务器访问Access的MDB数据库
- ALV详解:Function ALV(二)
- Struts2笔记——与ServletAPI解耦
- URL锚点HTML定位技术机制
- [POJ 2774] Long Long Message 【后缀数组】
- 让你不再纠结GitHub:Git起步
- Android: Failure [INSTALL_FAILED_DEXOPT] and Failure [INSTALL_FAILED_UID_CHANGED] 解决方案
- Java将数据写入word文档(.doc)
- tomcat设置文件编码
- 口碑点餐相关问题FAQ
- Java系统高并发之Redis后端缓存优化
- 【Linux】Swap与Memory
- 四个修改Docker默认存储位置的方法
- nginx1.8.1反向代理、负载均衡功能的实现
- spring mvc中获取请求URL
- debian下erlang新版本安装
- 零基础学习python_魔法方法(41-48课)(迭代器)
热门文章
- [转帖]一文尽懂 USB4
- [SourceTree] - 使用内置 PuTTY 克隆项目出现 fatal: early EOF 问题之解决
- 《Mysql - Mysql 是如何保证高可用的?》
- Python14之字符串(各种奇葩的内置方法)
- Hello World详解
- python学习-51 shelve模块
- 【mapreudce】6.对Nginx的access日志进行数据清洗,我们提取出文件数据的ip,时间,url
- ALV报表——基础(一)
- IAT Hook 原理分析与代码编写
- gitlab私有环境搭建