2020-11-14牛客小白月赛29-D

种树

https://ac.nowcoder.com/acm/contest/8564/D

2020-11-14牛客小白月赛29-D

[by_041]
  • 看题,分析,大剪刀就是用来搬运大数的,多大呢?在(0m+1)/2层内最大的
  • 那么答案就很明显了,(m+1)/2内的深度返回大值,其余返回小值
  • 附上代码
#include<iostream>

using namespace std;

void swp(int&a,int&b)
{a^=b;b^=a;a^=b;return;}
int maxx(int a,int b)
{return a>b?a:b;}
int minn(int a,int b)
{return a<b?a:b;}
int input()
{char ch=getchar();
 while(ch<'0'||ch>'9')
   ch=getchar();
 int a=ch-'0';
 while((ch=getchar())>='0'&&ch<='9')
   a=(a<<3)+(a<<1)+ch-'0';
 return a;
}
void output(int a)
{
 if(a>9)
   output(a/10);
 putchar(a%10+'0');
 return;
}

struct node_
{
    int l,r,val;
}d[1000001];
int n,m,anss;

int goo(int f=1,int layer=1)
{
    if(!d[f].l)return d[f].val;
    if(layer<=m)
        return maxx(goo(d[f].l,layer+1),goo(d[f].r,layer+1));
    return minn(goo(d[f].l,layer+1),goo(d[f].r,layer+1));
}

int main()
{
    n=input();
    for(int i=1;i<=n;i++)
        d[i].l=input(),d[i].r=input(),m+=(bool)d[i].l;
    m=(m+1)/2;
    for(int i=1;i<=n;i++)
        d[i].val=input();
    anss=goo();
    output(anss);
    return 0;
}
全部评论

相关推荐

北斗导航Compass低仿版:学历一般 没实习 非科班,肯定很难过初筛了,先找个中小厂好好干吧,拿这段实习去投大厂实习
点赞 评论 收藏
分享
会不会进去就面临裁员啊....
MellowWW:我朋友签的美区销售岗,这才是天崩开局
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务