首页 > 其他分享 >hdu 5444 长春区域赛网络赛 1008 Elven Postman(模拟)

hdu 5444 长春区域赛网络赛 1008 Elven Postman(模拟)

时间:2023-04-23 21:36:30浏览次数:41  
标签:sz hdu Elven Postman pt int tree pos ++


题目链接:

hdu 5444


题目大意:

给出一个序列,这个序列的第一个点是树的根节点,每次操作从当前点走到当前最靠右的每走过的点(点的序号越小越靠右),问将物品从根送到某个点的行进路线.


题目分析:

  • 个人认为难在题意。。。
  • 构造出这个树之后,直接从目的地走回根节点就可以得到要求的路径。
  • 然后如何构造呢?我们可以知道每次要到达的目的地就是当前位置后面的最小的点,然后每次我们从根节点出发,判断下一个序列中的点与当前在树上的位置上的数的大小关系,然后选择路径,直到找到最小的数,再重复这一操作即可。

AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int maxn = 1100;
struct tree{
    int v, l, r, f;
    tree(){}
    tree(int v, int l, int r, int f):v(v), l(l), r(r), f(f){}
} t[maxn<<2];
int T, n;
int pt, sz;
int st[maxn];
int a[maxn];
int ps[maxn];
bool v[maxn];

void work(int x){
    int pos = 0, ed = ps[x];
    while(1){
        if (pt > ed) break;
        v[a[pt]] = true;
        if (t[pos].v > a[pt]){
            if (t[pos].r == -1){
                st[a[pt]] = sz;
                t[sz] = tree(a[pt++], -1, -1, pos);
                t[pos].r = sz;
                pos = sz++;
            }
            else pos = t[pos].r;
        }
        else{
            if (t[pos].l == -1){
                st[a[pt]] = sz;
                t[sz] = tree(a[pt++], -1, -1, pos);
                t[pos].l = sz;
                pos = sz++;
            }
            else pos = t[pos].l;
        }
    }
}
char s[1100];
void output(int x){
    int len = 0, px;
    while(1){
        px = x;
        x = t[x].f;    
        if (x == -1) break;
        if (t[x].l == px) s[len++] = 'W';
        else s[len++] = 'E';
    }
    for (int i = 0, j = len-1; i < j; i++, j--)
        swap(s[i], s[j]);
    s[len] = 0;
    printf("%s\n", s);
}
int main()
{
    scanf("%d", &T);
    while(T--){
        scanf("%d", &n);
        for (int i = 0; i < n; i++){
            v[i+1] = false;
            scanf("%d", &a[i]);
            ps[a[i]] = i;
        }
        sz = 0, pt = 1;
        t[sz++] = tree(a[0], -1, -1, -1);
        v[a[0]] = true;
        for (int i = 1; i <= n; i++)
            if (!v[i]){ work(i); }
        int q, qq;
        scanf("%d", &q);
        for (int i = 0; i < q; i++){
            scanf("%d", &qq);
            output(st[qq]);
        }
    }
    return 0;
}


标签:sz,hdu,Elven,Postman,pt,int,tree,pos,++
From: https://blog.51cto.com/u_7936627/6218747

相关文章

  • PostMan:教程
    新版:Scope:server     PostMan  地址栏:1329323.1326238.342123.24323:8080/coafsafstTsdywaerweape/39这是接口地址,即所需要测试的项目地址 地址栏前的DELETE是请求方式请求方式有四种POst、GET、put、delete 如果无需附带参数直接点击send发送请求 地址栏下共两排第一排......
  • postman
    目录设置环境变量ip和端口设置环境变量ip和端口......
  • HDU 5389 Zero Escape(DP + 滚动数组)
    ZeroEscapeTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:131072/131072K(Java/Others)TotalSubmission(s):864    AcceptedSubmission(s):438ProblemDescriptionZeroEscape,isavisualnoveladventurevideogamedirectedbyKotar......
  • HDU1873 看病要排队
    E- 看病要排队TimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uDescription看病要排队这个是地球人都知道的常识。不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么......
  • HDU 1114 Piggy-Bank
    F- Piggy-BankTimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit StatusDescriptionBeforeACMcandoanything,abudgetmustbepreparedandthenecessaryfinancialsupportobtained.Themaininc......
  • HDU 1869 六度分离
    六度分离TimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit Status Practice HDU1869Description1967年,美国著名的社会学家斯坦利・米尔格兰姆提出了一个名为“小世界现象(smallworldphenom......
  • HDU 1527 取石子游戏(博弈论)
    取石子游戏TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):3717    AcceptedSubmission(s):1868ProblemDescription有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有......
  • Postman接口测试-变量
    postman的四种变量:全局变量、环境变量、集合变量(项目变量)、普通变量-----------------------------------------------------------------------------------------------------全局变量:整个postman中的请求都可以使用创建的两种方法:第一种方法:再界面右上角-MANAGEENVIRONM......
  • Postman的使用
     ......
  • postman参数化
    一、设置全局变量或者环境变量全局变量:作用范围是针对postman下面所有测试集均生效环境变量:只对选择了对应环境的测试集生效1.打开Postman,点击右侧的Environments2.选择Global,设置全局变量,或者新建一个环境变量3.输入你要设置的变量名和变量,点击Save,进行保存4.引用全局/......