POJ 2795 (LA 3516) Exploring Pyramids 解题报告(递推)
来源:互联网 发布:淘宝网天猫大码女装 编辑:程序博客网 时间:2024/05/18 23:53
Exploring Pyramids
Time Limit: 6000MS Memory Limit: 65536KTotal Submissions: 1975 Accepted: 902Case Time Limit: 2000MS
Description
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 left most passage among thosethat 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 doesnot 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, sothe caves (c) and (d) on the picture below are considered different.
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 left most passage among thosethat 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 doesnot 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, sothe caves (c) and (d) on the picture below are considered different.
Input
The input contains 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
Output one integer number - the number of different cave systems (modulo 1 000 000 000) that could produce the output tape.
Sample Input
ABABABA
Sample Output
5
解题报告: 给定DFS遍历树,求有多少棵树满足条件。刘汝佳老师书上的题目,在POJ上找到了。
分析及递推的过程还是比较好的。每次取出左子树和右半边,保证了不会出现重复计算。
另外如果存在串,串的长度必然是奇数。子串也必须满足该条件。优化后大概300MS+
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char str[333];int d[333][333];const int mod = 1000000000;typedef long long LL;int dfs(int sta, int end){ if(sta == end) return 1; if(str[sta] != str[end]) return 0; int &a = d[sta][end]; if(a>=0) return a; a=0; for(int k=sta+2;k<=end;k+=2) if(str[sta] == str[k]) a = (a+(long long)dfs(sta+1,k-1)*dfs(k,end))%mod; return a;}int main(){ memset(d, -1, sizeof(d)); scanf("%s", str); if(strlen(str)%2==0) { puts("0"); return 0; } printf("%d\n", dfs(0, strlen(str)-1));}
0 0
- POJ 2795 (LA 3516) Exploring Pyramids 解题报告(递推)
- LA 3516 Exploring Pyramids (递推)
- UVaLive ( LA ) 3516 - Exploring Pyramids (DP 递推)
- [递推]Exploring Pyramids
- poj 2795 Exploring Pyramids
- poj 2795 Exploring Pyramids
- UVa 1362(LA 3516) Exploring Pyramids
- LA 3516 Exploring Pyramids 多叉树遍历
- LA 3516 Exploring Pyramids 记忆化搜索
- Exploring Pyramids - POJ 2795 dp
- UVALive 3516 Exploring Pyramids——递推
- LA3516 Exploring Pyramids 递推关系
- POJ-2208 Pyramids解题报告
- POJ 2795/LA3516-Exploring Pyramids - dp
- 多叉树计数,Exploring Pyramids, NEERC 2005, LA 3516
- LA 3516 - Exploring Pyramids (记忆化搜索dp)
- UVALive - 3516 Exploring Pyramids
- UVALive 3516Exploring Pyramids
- js的事件深入理解
- Matrix 中的post 和pre 和set 方法的区别 以及Canvas中的方法
- Android学习之旅——android中布局管理器的总结
- 回收站的东西删除了如何恢复
- Android中View的焦点事件整理
- POJ 2795 (LA 3516) Exploring Pyramids 解题报告(递推)
- 第十三章 正则表达式
- 如何设置让我们的无线路由器更安全
- 【ObjC那点儿事儿】变量作用域
- java 数字转换为字符串,长度不够前面补0
- 碎片化的数据大量产生,需要我们不断提高“数据能力
- 函数(模板)
- javascript Date format(js日期格式化)
- USACO-cha1-sec1.3(AOJ-133) Calf Flac