题目链接

参考.

\(Description\)

将\(1,2,\cdots,n(n\leq 300)\)依次入栈/出栈,并满足\(m(m\leq 90000)\)个形如\(x\)要在\(y\)之前出栈的限制,问合法的出栈序列有多少种。

\(Solution\)

没有限制就是个卡特兰数,但有了限制就要考虑好好DP了。。

序列的入栈&出栈顺序可以构成一棵二叉树,且每一棵子树中的点一定比该子树的根节点出栈早。

\(f[i][j]\)表示子树根节点为\(i\),其中的点是\(i\sim j\),\(i+1\sim j\)都比\(i\)出栈早。初始为:\(f[i][i]=1\).

无限制的DP方程就是: $$f[i][j]=\sum_{k=i+1}^jf[i][k-1]*f[k][j]$$

(这个是倒着枚举\(i\)的)

如果有限制,直接在DP完\(f[i][\ ]\)后把非法的\(f[i][\ ]\)设成0就行了。。

如果\(j\)要在\(k\)前出栈(\(j<k\)),那么\(f[j][k],f[j][k+1],\cdots\)都是非法的(\(f[\ ][\ ]\)当然是处理小的那个了)。

在\(j>k\)时,\(f[k][1],\cdots,f[k][j-1]\)是非法的。

最后的答案应是\(f[0][n]\).

注意如果限制有\(i\)在\(i\)前,那么直接0。

好像可以在\(f[\ ][\ ]\)上差分做,不看了。。https://ksmeow.moe/numbers_hdu5181_sol/

//483MS	1868K
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
#define mod (1000000007)
const int N=305; int n,L[N],R[N],f[N][N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
int T=read(),m; bool flag;
while(T--)
{
flag=0;
n=read(),m=read();
for(int i=0; i<=n; ++i) L[i]=0,R[i]=n+1;
for(int x,y,i=1; i<=m; ++i)
{
x=read(),y=read();
if(x<y) R[x]=std::min(R[x],y);
else if(x>y) L[y]=std::max(L[y],x);
else flag=1;
}
if(flag) {puts("0"); continue;}
memset(f,0,sizeof f);
for(int i=n; ~i; --i)
{
f[i][i]=1;
for(int j=i+1; j<=n; ++j)
for(int k=i+1; k<=j; ++k)
(f[i][j]+=1ll*f[i][k-1]*f[k][j]%mod)%=mod;
for(int j=1; j<L[i]; ++j) f[i][j]=0;
for(int j=R[i]; j<=n; ++j) f[i][j]=0;
}
printf("%d\n",f[0][n]);
}
return 0;
}

HDU.5181.numbers(DP)的更多相关文章

  1. hdu 5181 numbers——思路+区间DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5181 题解:https://www.cnblogs.com/Miracevin/p/10960717.ht ...

  2. hdu 5181 numbers

    http://acm.hdu.edu.cn/showproblem.php?pid=5181 题意: 有一个栈,其中有n个数1~n按顺序依次进入栈顶,在某个时刻弹出. 其中m个限制,形如数字A必须在数 ...

  3. HDOJ(HDU).1058 Humble Numbers (DP)

    HDOJ(HDU).1058 Humble Numbers (DP) 点我挑战题目 题意分析 水 代码总览 /* Title:HDOJ.1058 Author:pengwill Date:2017-2 ...

  4. hdu 3709 数字dp(小思)

    http://acm.hdu.edu.cn/showproblem.php?pid=3709 Problem Description A balanced number is a non-negati ...

  5. hdu 4352 数位dp + 状态压缩

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. hdu 4123 树形DP+RMQ

    http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...

  7. hdu 4507 数位dp(求和,求平方和)

    http://acm.hdu.edu.cn/showproblem.php?pid=4507 Problem Description 单身! 依旧单身! 吉哥依旧单身! DS级码农吉哥依旧单身! 所以 ...

  8. hdu 4283 区间dp

    You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化

    HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...

随机推荐

  1. springSecurity入门小demo--配置文件xml的方式

    本例子只是一个最最最简单的入门demo,重点讲解xml的配置参数的意思和遇到的坑,主要的功能有: 自定义登录页面,错误页面 配置角色 csrf-403报错解决方法(加上一行代码配置就ok) 后台ifr ...

  2. 快速了解yuv4:4:4 yuv4:2:2 yuv 4:1:1 yuv 4:2:0四种YUV格式区别

    四种YUV格式区别如下: 1.YUV  4:4:4抽样方式: Y: Y0 Y1 Y2 Y3 U: U0 U1 U2 U3 V: V0 V1 V2 V3 2.YUV   4:2:2抽样方式: Y   : ...

  3. WebSlides - 轻松制作漂亮的 HTML 幻灯片(演讲稿)

    WebSlides 是一个开源的 HTML 幻灯片项目,能够帮助熟悉前端语言的开发者快速制作出效果精美的幻灯片.页面中的每个 <section> 都是一个独立的幻灯片,只需要很少的 CSS ...

  4. 工欲善其事必先利其器,用Emmet提高HTML编写速度

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板,在别人写好的骨架内,填入自己的内容.还有一种很炫的方法----简写法. 常用的简写法,目前主要是Emmet和Haml两种.这两种简写 ...

  5. Django安装配置

    django2.0基础 一.安装与项目的创建 1.安装 pip install django 2.查看版本 python -m django --version 3.创建项目 django-admin ...

  6. linux中使用corntab和shell脚本自动备份nginx日志,按天备份

    编写shell脚本,实现nginx日志每天自动备份到指定文件夹! 需要的命令mv , corntab -e(定时任务),shell脚本 这里先说一下corntab: https://www.cnblo ...

  7. 使用/dev/uinput的简要介绍(含demo程序)【转】

    转自:https://blog.csdn.net/zhongkunjia/article/details/75142699 uinput机制有2个很大的优点: 1) 不用自己写驱动(比如弄个红外遥控器 ...

  8. RTS与CTS的含义【转】

    转自:http://www.cnblogs.com/sunyubo/archive/2010/04/21/2282176.html 一.RS232标准中的RTS与CTS RTS,CTS------请求 ...

  9. 【转】深入理解C++中public、protected及private用法

    首先明白以下两点: 1.类的一个特征就是封装,public和private作用就是实现这一目的. 即:用户代码(类外)可以访问public成员而不能访问private成员:private成员只能由类成 ...

  10. 关于RestFul API 介绍与实践

    之前演示的PPT,直接看图...     •参考链接: •RESTful API 设计最佳实践 •RESTful API 设计指南 •SOAPwebserivce和RESTfulwebservice对 ...