Exploring Pyramids

题目大意:给定一个欧拉序列(即每经过一个点,把这个点加入序列),问有多少种对应的多叉树

序列与树构造对应问题,考虑区间DP

dp[i][j]表示序列i...j对应二叉树个数

初始i == j,dp[i][j] = 1

dp[i][j] = 0,i!=j

转移:dp[i][j] = sum(dp[i + 1][k - 1] * dp[k][j]),s[i] == s[j]  即考虑从i出发,在k这个位置回来,然后再从k出发,到j的时候回来

被MOD卡了一下

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
#define abs(a) ((a) < 0 ? (-1 * (a)) : (a))
inline void swap(long long &a, long long &b)
{
long long tmp = a;a = b;b = tmp;
}
inline void read(long long &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '') c = ch, ch = getchar();
while(ch <= '' && ch >= '') x = x * + ch - '', ch = getchar();
if(c == '-') x = -x;
} const long long INF = 0x3f3f3f3f;
const long long MAXN = + ;
const long long MOD = ; long long dp[MAXN][MAXN],n;
char s[MAXN]; int main()
{
while(scanf("%s", s + ) != EOF)
{
n = strlen(s + );
memset(dp, , sizeof(dp));
for(register long long i = ;i <= n;++ i) dp[i][i] = ;
for(register long long k = ;k <= n;++ k)
for(register long long i = ;i <= n;++ i)
{
long long j = i + k - ;
if(j > n) break;
if(s[i] != s[j]) continue;
for(register long long k = i + ;k <= j;++ k)
if(s[i] == s[k]) dp[i][j] += dp[i + ][k - ] * dp[k][j] % MOD, dp[i][j] = dp[i][j] >= MOD ? dp[i][j] - MOD : dp[i][j];
}
printf("%lld\n", dp[][n]);
}
return ;
}

LA3516

最新文章

  1. iOS UIGestureRecognizer与UIMenuController(内容根据iOS编程)
  2. watch监听 chechbox 全选
  3. Unit Tests
  4. [ITSEC]信息安全&#183;Web安全培训第一期客户端安全之UBB系列
  5. IOS学习资源收集--关于动画的代码学习资源总汇(很棒的动画效果哦)
  6. 动漫网站基于jquery的横向手风琴特效
  7. jboss eap6出现Tags_$$_javassist_26 cannot be cast to javassist.util.proxy.ProxyObject的解决办法
  8. 百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](当中n可变),打印出该数值元素的全部组合。
  9. Activity与Service之间交互并播放歌曲的实现代码
  10. react中,constructor和getInitialState的区别
  11. Windbg调试关键区(CriticalSection)死锁
  12. asp.net core系列 33 EF查询数据 (2)
  13. 2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059
  14. Windows驱动——读书笔记《Windows驱动开发技术详解》
  15. Java基于opencv实现图像数字识别(四)—图像降噪
  16. SCCM2012 R2实战系列之六:安装客户端代理软件
  17. remote staging type or host is not specified
  18. Python自然语言处理学习——jieba分词
  19. Double H4.0
  20. 【CodeForces】698 C. LRU

热门文章

  1. maven 运行run as maven build的时候报错
  2. C++命令行多文件编译(g++)
  3. Linux操作系统系列-Linux基础
  4. jQuery.event.move
  5. 深入理解Java虚拟机(类加载机制)
  6. day2-元组、字典、文件操作
  7. LUOGU P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
  8. JavaSE_12_Properties类和缓冲流
  9. hession RMI 远程调用
  10. Jeecg-Boot 2.0.1 版本发布,前后端分离快速开发平台