【数据结构1-1】线性表 P4715 【深基16.例1】淘汰赛

题解

借用线段树思路递归得到最终解。
特别注意 在求解右子结点的时候(now<<1)+1记得加括号,不然会编译成now<<(1+1)。

AC代码

#include<bits/stdc++.h>
using namespace std;

struct Node{
    int id,pow;
}tree[600];

void build(int now,int l,int r){
    if(l==r){cin>>tree[now].pow;tree[now].id=l;return;}
    int mid=(l+r)>>1;
    build(now<<1,l,mid);
    build((now<<1)+1,mid+1,r);
    tree[now]=tree[now<<1].pow>tree[(now<<1)+1].pow?tree[now<<1]:tree[(now<<1)+1];
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int h;
    cin>>h;
    build(1,1,1<<h);
    cout<<(tree[2].pow<tree[3].pow?tree[2].id:tree[3].id)<<endl;
    return 0;
}
上一篇:python使用sympy不定积分入门及求解


下一篇:Sympy解方程-求极限-微分-积分-矩阵运算