完全没有思路,状压到死没调出来……吐槽一下这题目描述的好不清楚啊好多人都理解错题了……

题解:

真的挺神仙的,因为有每列最多放1个的限制,所以考虑按列dp,设f[i][j]表示考虑前i列在[1,i]中的右区间中有j个1,初始状态f[0][0]=1;注:以下右区间表示[r[u],m];

记录l,r的前缀和sl,sr,但是这两个数组的含义并不一样,sl[i]表示前i列中有多少行左区间已经结束,sr[i]表示的则是前i列中有多少行右区间已经开始。

转移:首先只考虑第i列,枚举右区间1的个数j,如果第i列不放1,那么$f[i][j]+=f[i-1][j]$,如果第i列放1,现在不考虑前i-1列的应响,$f[i][j]+=f[i-1][j-1]*(sr[i]-j+1)$,这里解释一下这个$sr[i]-j+1$,在前i列包括sr[i]行的右区间可以放1,而前i-1列已经放了$j-1$个1占据了$(j-1)$行,所以第i列能放1的行数为$(sr[i]-(j-1))$,由乘法计数原理得以上式子。但是我们这是没有考虑前i列左区间的情况:同样枚举右区间放k个1,此时有(sl[i]-sl[i-1])个左区间在第i列结尾,所以此时有(sl[i]-sl[i-1])个1必须要放,而有i-k-sl[i-1]个位置可以放1,所以要乘$A_{i-k-sl[i-1]}^{sl[i]-sl[i-1]}$,如果不合法会变成负数。最后f[m][n]即为最后答案。

 #include<iostream>
#include<cstdio>
#define LL long long
#define int LL
#define mod 998244353
#define MAXN 3010
using namespace std;
int n,m,l[MAXN],r[MAXN];
int sl[MAXN],sr[MAXN],f[MAXN][MAXN];
signed main()
{
cin>>n>>m;
for(int i=;i<=n;i++)cin>>l[i]>>r[i],sl[l[i]]++,sr[r[i]]++;
for(int i=;i<=m;i++)sl[i]+=sl[i-],sr[i]+=sr[i-];
f[][]=;
for(int i=;i<=m;i++)
{
f[i][]=f[i-][];
for(int j=;j<=i;j++)
f[i][j]=(f[i-][j]+f[i-][j-]*(sr[i]-j+)%mod)%mod;
for(int k=;k<=i;k++)
for(int j=sl[i-];j<sl[i];j++)
f[i][k]=f[i][k]*(i-k-j)%mod;
}
printf("%lld\n",f[m][n]);
}

HZOJ matrix的更多相关文章

  1. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

  2. Pramp mock interview (4th practice): Matrix Spiral Print

    March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...

  3. Atitit Data Matrix dm码的原理与特点

    Atitit Data Matrix dm码的原理与特点 Datamatrix原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于 ...

  4. Android笔记——Matrix

    转自:http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#translate Matrix的数学原理 在Android中,如果你 ...

  5. 通过Matrix进行二维图形仿射变换

    Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...

  6. [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  7. [LeetCode] Longest Increasing Path in a Matrix 矩阵中的最长递增路径

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

  8. [LeetCode] Search a 2D Matrix II 搜索一个二维矩阵之二

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  9. [LeetCode] Search a 2D Matrix 搜索一个二维矩阵

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

随机推荐

  1. js 百度地图和谷歌地图的选择

    最近手上接到一个需求: 国外的域名访问,显示谷歌地图 国内的域名访问,显示百度地图 切换中英文的时候,中文->显示百度地图,英文->能显示谷歌地图就显示谷歌地图,不能显示(报错)就显示百度 ...

  2. GIT → 01:学习版本控制的原因

    1.1 没有版本控制出现的问题 备份多个版本,浪费存储空间,花费时间长. 难以恢复至以前的历史版本,容易引发BUG,解决代码冲突困难. 难于追溯问题代码的修改人和修改时间.修改内容.日志信息. 项目升 ...

  3. drf模块及源码

    drf中的APIView请求生命周期 APIView的as_view(局部禁用csrf) => 调用父类view中的as_view返回view()方法 => 自己的类调用自己的dispat ...

  4. 避免SQL注入三慷慨法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangyy130/article/details/26154837       要说SQL注入还要从 ...

  5. UVA1204 Fun Game

    Fun Game https://odzkskevi.qnssl.com/8d698323a1e07d605cdeea708ee8a01d?v=1508703139 [题解] 不难发现如果一个串的原串 ...

  6. Leetcode17.Letter Combinations of a Phone Number电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...

  7. Python要如何实现(列表)排序?

    排序,是许多编程语言中经常出现的问题.同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现) 一.使用Python内置函数进行排序 Python中拥有内置函数实现排序,可以直接调用 ...

  8. win10下安装mongodb(解压版)

    首先到官网下载安装包.(https://www.mongodb.com/download-center#community) 1.创建mongodb目录 2.配置文件mongodb.config 3. ...

  9. [运维]Dell R710 raid配置 标签: raid运维 2017-04-15 19:35 581人阅读 评论(16)

    Dell R系列的一些服务器,raid的配置都大同小异,公司大部分的服务器,都是Dell R710型号的,这个型号的raid界面配置起来还是很简单的,下面来跟随小编体验一下raid如何配置吧.ps:图 ...

  10. Leetcode706.Design HashMap设计哈希映射

    不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get(key ...