正题

题目链接:http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%BE%8B%E9%A2%98/5302%20%E9%87%91%E5%AD%97%E5%A1%94


题目大意

给出一个欧拉序(只要到达每一个结点就把他加进序列的那种,编号会重复),求有多少树的分布。


解题思路

我们可以发现这里每个子树的字母是连续的,所以我们可以用fi,jfi,jf_{i,j}表示i∼ji∼ji\sim j这个区间组成树的方案树。然后每次我们考虑左右各增加一个字母,然后将其重新分割,得出动态转移方程。

fl,r=fl+1,r−1+∑l≤r−1,sl=skfl+1,k−1×fk,rfl,r=fl+1,r−1+∑l≤r−1,sl=skfl+1,k−1×fk,rf_{l,r}=f_{l+1,r-1}+\sum_{l\leq r-1,s_l=s_k}f_{l+1,k-1}\times f_{k,r}

然后我们可以用记忆化搜索做


code

#include<cstdio>
#include<cstring>
#define BPM 1000000000
using namespace std;
char s[310];
int f[310][310],n;
int find(int l,int r)//记忆化搜索
{if(l>r) return 0;if(l==r) return 1;if(f[l][r]!=-1) return f[l][r];//记忆化f[l][r]=0;if(s[l]==s[r])for(int k=l+2;k<=r;k++)f[l][r]=(f[l][r]+(long long)find(l+1,k-1)*find(k,r))%BPM;//统计答案return f[l][r];//返回
}
int main()
{memset(f,-1,sizeof(f));scanf("%s",s+1);n=strlen(s+1);for(int i=1;i<=n;i++) f[i][i]=1;printf("%d",find(1,n));
}

Ch5302-金字塔【区间dp】相关推荐

  1. 『金字塔 区间dp』

    金字塔 Description 虽然探索金字塔是极其老套的剧情,但是这一队 探险家还是到了某金字塔脚下.经过多年的研究,科 学家对这座金字塔的内部结构已经有所了解.首先, 金字塔由若干房间组成,房间之 ...

  2. 0x53. 动态规划 - 区间DP(习题详解 × 8)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...

  3. 算法竞赛进阶指南 0x53 区间DP

    总论 线性DP:从初态开始,沿着阶段的扩张,向某一个方向扩张,知道求出答案. 区间DP是一种特殊的线性DP,同时也与线段树等树形结构具备相同的特征. 阶段:区间的长度(一个转态要从比他小的区间并且包含 ...

  4. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  5. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  6. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

  7. 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)

    最优矩阵链乘(动态规划) 一个n∗mn*mn∗m的矩阵由 nnn 行 mmm 列共 n∗mn*mn∗m 排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个nm的矩阵乘mp的矩阵,运算量 ...

  8. 【每日DP】day13、P3147 [USACO16OPEN]262144 (区间DP,2048游戏)难度⭐⭐⭐★

    P3147 [USACO16OPEN]262144 P 想到合并,自然就想到区间dp,一个被合成的数之前是一个区间,并且由两个数比它小 111 的区间合成.可麻烦的是,我们并不知道之前的两个区间长度各 ...

  9. poj1651(区间dp)

    题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...

  10. HDU 5115 Dire Wolf ——(区间DP)

    比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: 1 #i ...

最新文章

  1. 深度学习贝叶斯,这是一份密集的6天速成课程(附视频与PPT)
  2. 淘宝网商品库优化实践访谈
  3. 微信小程序外卖增长402%,茶饮下单最活跃
  4. BZOJ 1624 Usaco Clear And Present Danger
  5. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
  6. 判断.java文件中getConnection与cleanUp数量是否匹配
  7. Shell编程关于Sha-Bang(#!)
  8. 如何优雅地添加MGR节点?
  9. *与**在python中的使用
  10. mysql innodb缓冲池_InnoDB 缓冲池
  11. 小米蓝牙耳机驱动_硬核拆解——小米蓝牙耳机
  12. matlab向量自回归代码实现,结构向量自回归(SVAR)模型(二):操作步骤与结果解读...
  13. android translate 参数,关于安卓的TranslateAnimation的使用
  14. 傅里叶变换 相位谱 幅度谱
  15. [读书笔记]金融市场基础笔记
  16. hihocoder #1828 : Saving Tang Monk II(BFS)
  17. mumu模拟器安装xposed
  18. JS HTML Web端使用MQTT通讯测试
  19. 长文总结 | Python基础知识点,建议收藏
  20. WSL2 启用systemd

热门文章

  1. saiku 连接 MySQL_Saiku连接mysql数据库(二)
  2. 只能选择分卷文件的第一部分。_为机器学习模型选择正确的度量评估(第一部分)...
  3. c语言整数四则运算表达式的输出格式控制,Educoder CC++基本输入输出
  4. 7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!
  5. Java当中 递归打印文件大小(面向不同的对象打印文件大小)
  6. C++关于getline()和getchar()的小点
  7. 素数-试除法和埃式筛选法模板
  8. [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
  9. 蓝桥杯2018初赛-哪天返回-模拟
  10. oracle实现序列,oracle中创建序列和自增长列的实现方式