URAL 1136 Parliament (DFS)
题意
输入一棵树的后缀表达式(按左-右-中顺序访问),这棵树的每一个结点的数值都比它的左子树结点的数值大,而比它的右子树结点的数值小,要求输出其按右-左-中顺序访问的表达式。所有的数都为正整数,而且不会重复。
思路
很像根据中缀和后缀表达式求前缀表达式之类的题。方法自然也差不多。由DFS的括号性质可知,每一个树都对应表达式的一个区间,而此题中区间的最后一个就是树的根,然后根据根的大小可以把区间分为值小于和大于根值的两部分,即左子树和右子树,然后递归地输出右子树、左子树,最后再输出根即可。
代码
[cpp]
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#define MID(x,y) ((x+y)/2)
#define MEM(a,b) memset(a,b,sizeof(a))
#define REP(i, begin, end)   for (int i = begin; i <= end; i ++)
using namespace std;
const int maxn = 3005;
int a[maxn];
void dfs(int l, int r){
    if (l > r)  return ;
    if (l == r){
        printf("%d ", a[r]);
        return ;
    }
    int x = a[r];
    int p = r - 1;
    while(p >= l && a[p] > x) p --;
    dfs(p+1, r-1);
    dfs(l, p);
    printf("%d ", a[r]);
}
int main(){
	//freopen("test.in", "r", stdin);
	//freopen("test.out", "w", stdout);
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i ++){
        scanf("%d", &a[i]);
	}
    dfs(0, n-1);
	return 0;
}
[/cpp]
URAL 1136 Parliament (DFS)的更多相关文章
- ural 1136. Parliament
		题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1136 题目描述:给定一个按照(左子树-右子树-根)(即先序)遍历序列的树,求其按照 右子 ... 
- URAL 1136 Parliament 二叉树水题 BST后序遍历建树
		二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的. 跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递 ... 
- URAL.1033 Labyrinth (DFS)
		URAL.1033 Labyrinth (DFS) 题意分析 WA了好几发,其实是个简单地DFS.意外发现这个俄国OJ,然后发现ACRUSH把这个OJ刷穿了. 代码总览 #include <io ... 
- timus 1136 Parliament(二叉树)
		Parliament Time limit: 1.0 secondMemory limit: 64 MB A new parliament is elected in the state of MMM ... 
- timus 1136 Parliament(e)
		Parliament Time limit: 1.0 secondMemory limit: 64 MB A new parliament is elected in the state of MMM ... 
- 1136. Parliament(二叉树)
		1136 先由后左 再父 建一个二叉树 #include <iostream> #include<cstdio> #include<cstring> #includ ... 
- 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
		题目传送门 /* 记忆化搜索(DP+DFS):dp[i][j] 表示第i到第j个字符,最少要加多少个括号 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 当 ... 
- URAL 1208 Legendary Teams Contest(DFS)
		Legendary Teams Contest Time limit: 1.0 secondMemory limit: 64 MB Nothing makes as old as years. A l ... 
- URAL 1137Bus Routes (dfs)
		Z - Bus Routes Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ... 
随机推荐
- hihoCoder_1445_后缀自动机二·重复旋律5
			#1445 : 后缀自动机二·重复旋律5 时间限制:10000ms 单点时限:2000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数 ... 
- jQuery  的attr()方法
			在JS中设置节点的属性与属性值用到setAttribute(),获得节点的属性与属性值用到getAttribute(),而在jquery中,用一个attr()就可以全部搞定了,赞一个先 ^^ jque ... 
- leetcode——Search for a Range 排序数组中寻找目标下标范围(AC)
			Given a sorted array of integers, find the starting and ending position of a given target value. You ... 
- OCR技术浅探:Python示例(5)
			文件说明: 1. image.py——图像处理函数,主要是特征提取: 2. model_training.py——训练CNN单字识别模型(需要较高性能的服务器,最好有GPU加速,否则真是慢得要死): ... 
- 离线安装部署zabbix
			一. 安装好CentOS安装过程中添加php,mariadb等所需要的依赖 二. 准备好所有所需的rpm压缩文件包在centos中解压,这里放在根目录下zabbix_rpms文件夹下 三. 安装所需r ... 
- PAT 1053 Path of Equal Weight[比较]
			1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight Wi assigned t ... 
- Django组件拾忆
			知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ... 
- Java 和 Python 解析动态 key 的 JSON 数据
			一.概述 解析JSON过程中,什么情况都可能遇到.遇到特殊的情况,不会怎么办?肯定不是设计的问题,一定是你的姿势不对. 有这样一种JSON需要解析: { "b3444533f6544&quo ... 
- NiFi REST API 的使用
			一.概述 为方便用户使用 NiFi 进行二次开发,NiFi 为开发者提供了 NIFI REST API. 关于 API 的详细介绍,请参见官网 NIFI REST API.这里仅给出一些注意的小细节. ... 
- jmeter -xml日志格式中网络时间与服务器时间的区分
			在 LR 中是有一个“网页细分图”的,通过这个图,你可以比较容易的区分哪些请求的响应时间最长,如果响应时间过程,是消耗在server处理的时候,还是消耗在网络传输过程中——也就是所谓的 Server ... 
