LA3516 Exploring Pyramids
2024-09-06 11:13:28
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
最新文章
- iOS UIGestureRecognizer与UIMenuController(内容根据iOS编程)
- watch监听 chechbox 全选
- Unit Tests
- [ITSEC]信息安全&#183;Web安全培训第一期客户端安全之UBB系列
- IOS学习资源收集--关于动画的代码学习资源总汇(很棒的动画效果哦)
- 动漫网站基于jquery的横向手风琴特效
- jboss eap6出现Tags_$$_javassist_26 cannot be cast to javassist.util.proxy.ProxyObject的解决办法
- 百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](当中n可变),打印出该数值元素的全部组合。
- Activity与Service之间交互并播放歌曲的实现代码
- react中,constructor和getInitialState的区别
- Windbg调试关键区(CriticalSection)死锁
- asp.net core系列 33 EF查询数据 (2)
- 2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059
- Windows驱动——读书笔记《Windows驱动开发技术详解》
- Java基于opencv实现图像数字识别(四)—图像降噪
- SCCM2012 R2实战系列之六:安装客户端代理软件
- remote staging type or host is not specified
- Python自然语言处理学习——jieba分词
- Double H4.0
- 【CodeForces】698 C. LRU
热门文章
- maven 运行run as maven build的时候报错
- C++命令行多文件编译(g++)
- Linux操作系统系列-Linux基础
- jQuery.event.move
- 深入理解Java虚拟机(类加载机制)
- day2-元组、字典、文件操作
- LUOGU P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
- JavaSE_12_Properties类和缓冲流
- hession RMI 远程调用
- Jeecg-Boot 2.0.1 版本发布,前后端分离快速开发平台