UVA 1362 Exploring Pyramids 区间DP
2015-12-28 21:46
267 查看
Archaeologists have discovered a new set of hidden caves in one of the Egyptian pyramids. The decryption of ancient hieroglyphs on the walls nearby showed that the caves structure is as follows. There are n caves in a pyramid, connected by narrow passages, one of the caves is connected by a passage to the outer world. The system of the passages is organized in such a way, that there is exactly one way to get from outside to each cave along passages. All caves are located in the basement of the pyramid, so we can consider them being located in the same plane. Passages do not intersect. Each cave has its walls colored in one of several various colors. The scientists have decided to create a more detailed description of the caves, so they decided to use an exploring robot. The robot they are planning to use has two types of memory - the output tape, which is used for writing down the description of the caves, and the operating memory organized as a stack. The robot first enters the cave connected to the outer world along the passage. When it travels along any passage for the first time, it puts its description on the top of its stack. When the robot enters any cave, it prints the color of its walls to its output tape. After that it chooses the leftmost passage among those that it has not yet travelled and goes along it. If there is no such passage, the robot takes the passage description from the top of its stack and travels along it in the reverse direction. The robot's task is over when it returns to the outside of the pyramid. It is easy to see that during its trip the robot visits each cave at least once and travels along each passage exactly once in each direction. The scientists have sent the robot to its mission. After it returned they started to study the output tape. What a great disappointment they have had after they have understood that the output tape does not describe the cave system uniquely. Now they have a new problem - they want to know how many different cave systems could have produced the output tape they have. Help them to find that out. Since the requested number can be quite large, you should output it modulo 1 000 000 000. Please note, that the absolute locations of the caves are not important, but their relative locations are important, so the caves (c) and (d) on the picture below are considered different.
Input
The input file contains several test cases, and each of them consists of a single line with the output tape that the archaeologists have. The output tape is the sequence of colors of caves in order the robot visited them. The colors are denoted by capital letters of the English alphabet. The length of the tape does not exceed 300 characters.
Output
For each input case, write to the output a single line containing one integer number - the number of different cave systems (modulo 1 000 000 000) that could produce the output tape.
Sample Input
ABABABA
AB
Sample Output
5 0
题意:给出一颗多叉树,各个节点用字母表示,从根节点开始,每次尽量往左走,走不通了就回溯,把遇到的字母顺序记下来,可以得到一个序列,现给出这个序列,问有多少棵树与之对应。
[b]题解[/b]:
设输入序列为S,d(i,j)为子序列Si,Si+1,…,Sj对应的树的个数,则可以发现d(i,i)=1;并且Si不等于Sj时d(i,j)=0(因为起点和终点应该是同一点)。在其他情况下,设第一个分支在Sk时回到树根(必须有Si=Sk),则这个分支对应的序列是Si+1…Sk-1,方案数为d(i+1,k-1);其他分支对应的访问序列为Sk,…Sj,方案数为d(k.j)。这样,在非边界情况,递推关系为;
d(i,j)=sigma{d(i+1,k-1)*d(k,j)|i+2<=k<=j,Si=Sk=Sj}.
相关文章推荐
- 深入浅出--二叉树
- 【android_温故知新】使用 Intent 和 IntentFilter 进行通信
- vnc与window 之间复制 ubuntu12.04
- HttpURLConnection用法详解
- unix关于打包命令zip的使用
- Zookeeper 笔记
- JNI简单使用的小总结
- 【UVa】[401]Palindromes
- iOS经典讲解之网络编程 TCP/UDP HTTP
- java学习笔记
- HBase 集群环境搭建-基于Hadoop2.2.0
- 黑马程序员--OC自学笔记---03类方法、匿名类、封装、关系、重载、static
- 第三章 消息摘要算法--MD5
- 通过硬件层提高Android动画的性能
- 计算机中丢失OPENGL.dll
- 上海Uber优步司机奖励政策(12月28日到1月3日)
- (转)根据IP返回对应的位置信息
- iOS 截屏系统通知
- 学习笔记——多线程
- Hive使用小建议;编写hive UDF方法小示例