2015 ACM/ICPC Asia Regional Changchun Online Pro 1008 Elven Postman (BIT,dfs)
Elven Postman
Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0
are very peculiar creatures. As we all know, they can live for a very
long time and their magical prowess are not something to be taken
lightly. Also, they live on trees. However, there is something about
them you may not know. Although delivering stuffs through magical
teleportation is extremely convenient (much like emails). They still
sometimes prefer other more “traditional” methods.
So, as a
elven postman, it is crucial to understand how to deliver the mail to
the correct room of the tree. The elven tree always branches into no
more than two paths upon intersection, either in the east direction or
the west. It coincidentally looks awfully like a binary tree we human
computer scientist know. Not only that, when numbering the rooms, they
always number the room number from the east-most  position to the west.
For rooms in the east are usually more preferable and more expensive due
 to they having the privilege to see the sunrise, which matters a lot in
 elven culture.
Anyways, the elves usually wrote down all the
rooms in a sequence at the root of the tree so that the postman may know
 how to deliver the mail. The sequence is written as follows, it will go
 straight to visit the east-most room and write down every room it
encountered along the way. After the first room is reached, it will then
 go to the next unvisited east-most room, writing down every unvisited
room on the way as well until all rooms are visited.
Your task is to determine how to reach a certain room given the sequence written on the root.
For instance, the sequence 2, 1, 4, 3 would be written on the root of the following tree.
 
 
For each test case, there is a number n(n≤1000) on a line representing the number of rooms in this tree. n integers representing the sequence written at the root follow, respectively a1,...,an where a1,...,an∈{1,...,n}.
On the next line, there is a number q representing the number of mails to be sent. After that, there will be q integers x1,...,xq indicating the destination room number of each mail.
Note that for simplicity, we assume the postman always starts from the root regardless of the room he had just visited.
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+;
int n; int C[maxn];
#define lowbit(x) (x&-x)
int sum(int x)
{
int ret = ;
while(x > ){
ret += C[x]; x -= lowbit(x);
}
return ret;
} void add(int x,int d)
{
while(x <= n){
C[x] += d; x += lowbit(x);
}
} string ans[maxn]; int qry[maxn];
bool mark[maxn]; int a[maxn]; char path[maxn]; bool vis[maxn]; void dfs(int u = ,int f = ,int d = ,int tot = n)
{
if(vis[u] || tot <= ) return;
vis[u] = true;
if(mark[a[u]]){
ans[a[u]].assign(path+,path+d);
}
add(a[u],);
if(tot == ) return;
int ct = a[u]- sum(a[u])+;
int rst = u+ct; if(rst>u+ && u < n) {
path[d] = 'E';
dfs(u+,u,d+,ct-);
}
if(rst>u && rst<=n){
path[d] = 'W';
dfs(rst,u,d+,tot-ct);
}
} int main()
{
//freopen("in.txt","r",stdin);
int T; scanf("%d",&T);
a[] = ; path[] = '*';
while(T--){
scanf("%d",&n);
for(int i = ; i <= n; i++) scanf("%d",a+i);
int q;
scanf("%d",&q);
memset(C,,sizeof(C));
memset(mark,,sizeof(mark));
for(int i = ; i < q; i++){
scanf("%d",qry+i);
mark[qry[i]] = true;
}
memset(vis,,sizeof(vis));
dfs();
for(int i = ; i < q; i++){
printf("%s\n",ans[qry[i]].c_str());
}
}
return ;
}
2015 ACM/ICPC Asia Regional Changchun Online Pro 1008 Elven Postman (BIT,dfs)的更多相关文章
- 2015 ACM/ICPC Asia Regional Changchun Online  HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
		Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ... 
- 2015 ACM/ICPC Asia Regional Changchun Online Pro 1005 Travel (Krsukal变形)
		Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ... 
- 2015 ACM/ICPC Asia Regional Changchun Online Pro 1002  Ponds(拓扑排序+并查集)
		Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ... 
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
		Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ... 
- (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online  )
		http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others) Memo ... 
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
		http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ... 
- (线段树 区间查询)The Water Problem -- hdu -- 5443  (2015 ACM/ICPC Asia Regional Changchun Online)
		链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ... 
- 2015 ACM/ICPC Asia Regional Changchun Online  HDU - 5441  (离线+并查集)
		题目:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给你n,m,k,代表n个城市,m条边,k次查询,每次查询输入一个x,然后让你一个城市对(u,v ... 
- hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online
		很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死…… 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了……没了! 反复读题,终于在偶然间 ... 
随机推荐
- POJ 2311 Cutting Game (博弈)
			题意:给定一个长方形纸张,每次只能水平或者垂直切,如果切到1*1的方格就胜,问先手胜还是负. 析:根据Nim游戏可知,我们可以分别求出每个子游戏的和,就是答案,所以我们就枚举每一种切法,然后求出SG函 ... 
- JAVA企业级开发-jdbc事务,数据库连接池(10)
			一. JDBC事务 事务: 问题1.什么是事务 问题2.java中(jdbc)如何控制事务 1. 事务—重点 指的的逻辑上的一组(一组sql,insert update ,delete)操作,组成 ... 
- DIV文字水平垂直居中的方法
			水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会 ... 
- vue-cli 3.0安装和使用
			零. 前言 公司最近开发项目使用的是vue-cli 3.0版本开发,但是对于vue-cli 3.0版本一直没有研究过如何使用,公司使用配置:pug + ts + stylus + eslint:编辑器 ... 
- 十、正则表达式和JSON
			一.什么是正则表达式 正则表达式是一个特殊字符序列,一个字符串是否与我们所设定的这样的字符序列相匹配. 应用:快速检索文本.实现一些替换文本的操作 1.检查一串数字是否是电话号码 2.检查一个字符串是 ... 
- 安装mongo可视化管理工具mongo admin
			https://github.com/mrvautin/adminMongo github地址 安装要求下载下来,然后安装即可 中间出现了问题: 说是开了代理,可以关掉代理之后,然后把下载下来的删了, ... 
- NET?.NET Framework?.NET Core?
			什么是.NET?什么是.NET Framework?什么是.NET Core? https://www.cnblogs.com/1996V/p/9037603.html 什么是.NET?什么是.NET ... 
- ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
			ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面” DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求 ... 
- SLF4J user manual   专题
			System Out and Err Redirected to SLF4J The sysout-over-slf4j module allows a user to redirect all ca ... 
- JS类对象实现继续的几种方式
			0. ES6可以直接使用class,extends来继承. 1. 原型继承 父类: function Persion(name,age){ this.name = name; this.age = ... 
