ZOJ 2243 & POJ 1785 Binary Search Heap Construction 笛卡尔树 || 单调栈
来源:互联网 发布:excel 列出不重复数据 编辑:程序博客网 时间:2024/05/03 16:59
题目:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1243
http://poj.org/problem?id=1785
题意:
给一个数
思路:
直接建
#include <bits/stdc++.h>using namespace std;const int N = 50000 + 10, INF = INT_MAX;struct node{ char val[100+10]; int pri, fat, son[2]; friend bool operator< (node a, node b) { if(strcmp(a.val, b.val) < 0) return true; else return false; } void init(int _pri, int _fat) { pri = _pri, fat = _fat; son[0] = son[1] = 0; }}tr[N];int root;int top, stk[N];int cartesian_build(int n){ top = 0; for(int i = 1; i <= n; i++) { int k = top; while(k > 0 && tr[stk[k-1]].pri < tr[i].pri) k--; if(k != 0) { tr[stk[k-1]].son[1] = i; tr[i].fat = stk[k-1]; } if(k != top) { tr[i].son[0] = stk[k]; tr[stk[k]].fat = i; } stk[k++] = i; top = k; } return stk[0];}void dfs(int x){ if(! x) return; printf("("); dfs(tr[x].son[0]); printf("%s/%d", tr[x].val, tr[x].pri); dfs(tr[x].son[1]); printf(")");}int main(){ int n; while(scanf("%d", &n), n) { tr[0].init(INF, 0); for(int i = 1; i <= n; i++) { scanf(" %[a-z]/%d", tr[i].val, &tr[i].pri);//这个读入比较有意思 tr[i].init(tr[i].pri, 0); } sort(tr + 1, tr + 1 + n); root = cartesian_build(n); dfs(root); printf("\n"); } return 0;}
另外这题用单调栈也可以做。首先对label排序,然后按priority往左右扩展,扩展到不大于它的地方,加上括号即可。跟HDU1506正好一反,代码懒得写了。。。
阅读全文
0 0
- ZOJ 2243 & POJ 1785 Binary Search Heap Construction 笛卡尔树 || 单调栈
- zoj 2243 Binary Search Heap Construction(笛卡尔树)
- poj 1785 Binary Search Heap Construction(笛卡尔树)
- POJ-1785-Binary Search Heap Construction(笛卡尔树)
- poj-1785 Binary Search Heap Construction(笛卡尔树)
- 笛卡尔树 POJ ——1785 Binary Search Heap Construction
- POJ 1785 Binary Search Heap Construction 笛卡尔树
- ZOJ 2243 Binary Search Heap Construction笛卡尔树(二叉搜索+堆)
- POJ1785 Binary Search Heap Construction【笛卡尔树】
- POJ 1785 Binary Search Heap Construction 【笛卡尔树构造,线段树RMQ(Range Max/Min Query)】
- poj1785&zoj2243 Binary Search Heap Construction(笛卡尔树)
- POJ 1785 Binary Search Heap Construction
- POJ 1785 Binary Search Heap Construction(RMQ)
- POJ 1785 Binary Search Heap Construction [treap]
- POJ 1785 : Binary Search Heap Construction
- POJ 1785 Binary Search Heap Construction 笔记
- POJ 1785 Binary Search Heap Construction (线段树)
- poj 1785 Binary Search Heap Construction( 分治 + RMQ )
- oracle 数据库截取字符串
- CentOS6.8 通过yum在线安装MySQL5.7
- Angular2MVC5Application错误
- HDU 6078Wavel Sequence
- 单例模式(饿汉模式和懒汉模式)
- ZOJ 2243 & POJ 1785 Binary Search Heap Construction 笛卡尔树 || 单调栈
- 简单使用HttpClient工具
- LeetCode 268 Missing Number
- mysql assoc和row的区别
- HDU 2017 多校联合训练赛4 4003 6069 Counting Divisors 素数筛和素因数分解
- 计算机网络保研面试题
- SetConsoleTextAttribute的使用
- linux命令备忘
- spring boot-2(运行原理)