sdut2355Binary Search Heap Construction
2024-10-20 11:49:19
链接
捣鼓了一下午。。按堆建树 写完交 返回TLE。。数据不大 感觉不会超了 无奈拿了数据来看什么奇葩数据会超 发现数据跟我输出不一样 看了好久才明白理解错题意了
给出的字符串有两个标签 按前一个来建二叉搜索树 按后一个建堆 搜索树直接排序 然后依次插入右子树 若当前值比前一个的值大 就在与其父亲比较 总之放到合适位置。
这样的树叫笛卡尔树
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<cmath>
#include<queue>
#include<vector>
#include<stack>
#include<set>
#include<string>
using namespace std;
#define N 50010
struct node
{
int l,r,p,f;
char s[];
void init()
{
l=r=f=;
}
}tr[N];
int g;
void build(int u)
{
int v = u-;
while(tr[u].p>tr[v].p&&v) v = tr[v].f;
tr[u].l = tr[v].r;
tr[v].r = u;
tr[u].f = v;
}
void solve(int root)
{
if(tr[root].l)
{
printf("(");
solve(tr[root].l);
printf(")");
}
printf("%s",tr[root].s);
if(tr[root].r)
{
printf("(");
solve(tr[root].r);
printf(")");
}
}
bool cmp(node x,node y)
{
return strcmp(x.s,y.s)<;
}
int main()
{
// freopen("data8.in","r",stdin);
// freopen("data.out","w",stdout);
int i,j,k,n;
while(scanf("%d",&n)&&n)
{
int mm = ,st;g=;
for(i = ; i <= n ;i++)
{
scanf("%s",tr[i].s);
}
sort(tr+,tr+n+,cmp);
for(i = ; i <= n ;i++)
{
for(j = ; j < strlen(tr[i].s) ; j++)
{
if(tr[i].s[j]=='/') break;
}
tr[i].p = atoi(tr[i].s+j+);
if(mm<tr[i].p)
{
mm = tr[i].p;
st = i;
}
tr[i].init();
}
tr[].r = ;
tr[].f = ;
for(i = ; i <= n ;i++)
build(i);
printf("(");
solve(st);
printf(")");
puts("");
}
return ;
}
最新文章
- Redis简单案例(三) 连续登陆活动的简单实现
- Android 中的 Intent 简介
- java-数字类
- 【树上莫队】【带修莫队】【权值分块】bzoj4129 Haruna’s Breakfast
- webstorm激活码
- 分享一下 aix安装python提示C编译器问题的办法
- LightOj 1096 - nth Term (矩阵快速幂,简单)
- Python打印格式化与字符串
- 动手实现Expression翻译器1
- 解决airserver在Windows下安装失败的问题
- Hadoop常用命令集合
- Struts2和SpringMVC的区别
- 4本相见恨晚的Linux入门书籍
- Odoo 学习【一】http &; rpc
- Nginx+rtmp+ffmpeg 搭建推流服务器
- c++中嵌入python
- Jquery Validate 相关参数
- BugPhobia准备篇章:Scrum Meeting工作分析篇
- sudoers的权限被改,又忘记了root密码,又不能重启。这么做。
- 高维数据降维 国家自然科学基金项目 2009-2013 NSFC Dimensionality Reduction
热门文章
- activiti自己定义流程之自己定义表单(一):环境配置
- Codeforces Round #253 (Div. 1) A Borya and Hanabi
- Scrum 常见错误实践 之 形式化的站会
- MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)<;转>;
- Hackrank Candies DP
- 将前端js异步调用的多个服务合并为一个前端服务
- c# 字节高低位
- Android系统input按键处理流程(从驱动到framework)【转】
- git unstage
- YTU 2573: 连续奇数和