Gym - 101334E 多叉树遍历

题意:给定一个字符串,求有多少种树与之对应,对应方式是,每次遍历左节点,没有了,就回溯;

分析:d[i,j] = sum(d[i+1,k-1],d[k,j]) (str[i]==str[k]);

坑点是数组竟然要long long 不然会超时,神奇;

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 300+5;
 6 const int mod = 1000000000;
 7 char str[maxn];
 8 int d[maxn][maxn];
 9
10
11 int dp(int i,int j) {
12     if(i==j) return 1;
13     if(str[i]!=str[j]) return 0;
14     int& ans = d[i][j];
15     if(ans>=0) return ans;
16     ans = 0;
17
18     for(int k=i+2;k<=j;k++) {
19         if(str[i]==str[k]) {
20             ans = (ans + (long long)dp(i+1,k-1)*(long long)dp(k,j)) % mod;
21         }
22     }
23     return ans;
24 }
25
26 int main()
27 {
28     freopen("exploring.in","r",stdin);
29     freopen("exploring.out","w",stdout);
30     while(scanf("%s",str)!=EOF) {
31         memset(d,-1,sizeof(d));
32         printf("%d\n",dp(0,strlen(str)-1));
33     }
34     return 0;
35 }

时间: 2024-12-17 06:23:01

Gym - 101334E 多叉树遍历的相关文章

26、任务二十六——多叉树遍历、内容查找

0.题目 基于任务22,参考示例图,将二叉树变成了多叉树,并且每一个节点中带有内容 提供一个按钮,显示开始遍历,点击后,以动画的形式呈现遍历的过程 当前被遍历到的节点做一个特殊显示(比如不同的颜色) 每隔一段时间(500ms,1s等时间自定)再遍历下一个节点 增加一个输入框及一个“查询”按钮,点击按钮时,开始在树中以动画形式查找节点内容和输入框中内容一致的节点,找到后以特殊样式显示该节点,找不到的话给出找不到的提示.查询过程中的展示过程和遍历过程保持一致 1.解题过程 task23.html <

Gym 101334E dp

分析: 这一题给出的遍历的点的序列,不是树的中序遍历,前序遍历,只要遇到一个节点就打印一个节点.关键点就在,这个序列的首字母和尾字母一定要相同,因为最终都会回到根节点,那么每一个子树也一样. 状态: d[i][j]表示i至j的状态数 d[i][j]= d[i][j]=(d[i][j]+dp(i,k)*dp(k+1,j-1)%mod)%mod; #include <bits/stdc++.h> using namespace std; typedef long long ll; const in

UVALive - 3516【多叉树遍历Exploring Pyramids】-----2015年1月27日

一:问题描述 本题题意大致是说:给出一棵多叉树,每个节点的任意两个子节点都有左右之分.从根节点开始,每次尽量往左边走.走不通了就回溯,把遇到的字母顺次记录下来,可以得到一个序列.现在给定一个序列,要求满足条件的多叉树的数目. 二:题目分析 我们可以分析对于这个序列而言一定是对称序列,那么对于序列S而言, 我们定义d(i,j)为子序列对应的树的个数,边界条件是: 并且我们可以得出如下结论: 在其它情况下,设第一个分支在Sk 时回到树根(必须有Si =Sj )则这个分支对应的序列是 ,方案数为:d(

java实现线索化二叉树的前序、中序、后续的遍历(完整代码)

java实现线索化二叉树的前序.中序.后续的遍历 比如创建一个二叉树 1 / 3 6 / \ / 8 10 14 线索化二叉树几个概念: n个节点的二叉链表中含有n+1 [公式2n-(n-1)=n+1]个空指针域.利用二叉链表中的空指针域,存放指向该节点在某种遍历次序下的前驱和后继节点的指针(这种附加指针成为线索).如下面的就是6+1=7个空指针域 (8,10,14各有连个指针没有指向 6有一个) 加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树.分为前序线索二叉树.中序线索二叉树.

分享老男孩自动化开发运维Python12期

本套教程共L33天,完整版!!! 目录: L001-老男孩教育-Python12期VIP视频-18节 0001-开课介绍.mp40002-同学互相介绍.mp40003-python简史介绍.mp40004-python3的新特性.mp40005-开发工具ide介绍.mp40006-helloworld程序.mp40007-变量与赋值.mp40008-用户交互.mp40009-条件判断与缩进.mp40010-循环控制.mp40011-循环次数限制.mp40012-常用数据类型.mp40013-字符

贴吧/盖楼的技术实现(PHP)

2015年3月5日 14:36:44 目标, 实现类似百度贴吧的基本功能 实现: 1. 存储, 将数据库(MYSQL)当作一个大的结构体数组, 每一条记录用作为一个结构体, 记录父帖信息, 子帖信息, 兄弟帖信息 2. 显示, 因为回复帖在浏览器中显示的时候也是独占一行, 只是比楼主的帖子多了些缩进而已, 因此我将所有的回帖(子回帖, 孙子回帖....脑补网易盖楼)都看做是有着不同缩进的普通帖子 3. 技术上, 将某一贴的所有回帖, 子回帖, 孙子回帖....一次性独到内存中(缺点,可用缓存解决

Android APP 性能优化的一些思考

说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用.相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android 系统在流畅性方面不如 IOS 系统,为何呢,明明在看手机硬件配置上时,Android 设备都不会输于 IO

Android app 性能优化的思考--性能卡顿不好的原因在哪?

说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用.相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android 系统在流畅性方面不如 IOS 系统,为何呢,明明在看手机硬件配置上时,Android 设备都不会输于 IO

排列树与子集树

子集树 子集树主要求解当前集合的所有子集,是算法中的基本思想指导.参考代码如下,以求解字符串的子集串为例子: 1 /** 2 * 子集树 3 * @param S 字符数组 4 * @param t 初始为0 5 */ 6 public void ZJTree(char[] S , int t){ 7 if(t > S.length - 1){ // 叶子节点 8 System.out.println(String.valueOf(S).replace("#","&qu