题面

求出满足以下条件的 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]);
}

最新文章

  1. 什么是 kNN 算法?
  2. android控件库(2)-仿Google Camera 的对焦效果
  3. hdu 3987 Harry Potter and the Forbidden Forest 求割边最少的最小割
  4. Sql Server建立链接服务器访问Access的MDB数据库
  5. ALV详解:Function ALV(二)
  6. Struts2笔记——与ServletAPI解耦
  7. URL锚点HTML定位技术机制
  8. [POJ 2774] Long Long Message 【后缀数组】
  9. 让你不再纠结GitHub:Git起步
  10. Android: Failure [INSTALL_FAILED_DEXOPT] and Failure [INSTALL_FAILED_UID_CHANGED] 解决方案
  11. Java将数据写入word文档(.doc)
  12. tomcat设置文件编码
  13. 口碑点餐相关问题FAQ
  14. Java系统高并发之Redis后端缓存优化
  15. 【Linux】Swap与Memory
  16. 四个修改Docker默认存储位置的方法
  17. nginx1.8.1反向代理、负载均衡功能的实现
  18. spring mvc中获取请求URL
  19. debian下erlang新版本安装
  20. 零基础学习python_魔法方法(41-48课)(迭代器)

热门文章

  1. [转帖]一文尽懂 USB4
  2. [SourceTree] - 使用内置 PuTTY 克隆项目出现 fatal: early EOF 问题之解决
  3. 《Mysql - Mysql 是如何保证高可用的?》
  4. Python14之字符串(各种奇葩的内置方法)
  5. Hello World详解
  6. python学习-51 shelve模块
  7. 【mapreudce】6.对Nginx的access日志进行数据清洗,我们提取出文件数据的ip,时间,url
  8. ALV报表——基础(一)
  9. IAT Hook 原理分析与代码编写
  10. gitlab私有环境搭建