• 1240. 完全二叉树的权值


    弱弱的用bfs过了,双指针再说吧。。。

    #include<iostream>
    #include<queue>
    
    using namespace std;
    
    #define LL long long
    
    typedef struct{
        int v, u, idx;
    }Node;
    
    const int N = 100010, M = 20;
    
    int tr[N];
    int n;
    LL level[M];
    int cnt;
    
    void bfs(){
        queue<Node> q;
        q.push({tr[1], 1, 1});
        
        while(q.size()){
            auto h = q.front();
            q.pop();
            
            int v = h.v, u = h.u, idx = h.idx;
            
            level[u] += v;
            cnt = max(cnt, u);
        
            if(idx * 2 <= n) q.push({tr[idx * 2], u + 1, idx * 2});
            if(idx * 2 + 1 <= n) q.push({tr[idx * 2 + 1], u + 1, idx * 2 + 1});
        }
    }
    
    int main(){
        cin >> n;
        
        for(int i = 1; i <= n; i ++) cin >> tr[i];
        
        bfs();
        
        LL maxv;
        int res;
        for(int i = 1; i <= cnt; i ++){
            if(i == 1){
                maxv = level[1];
                res = 1;
            }else if(maxv < level[i]){
                maxv = level[i];
                res = i;
            }
        }
        
        cout << res << endl;
        
        return 0;
    }
    
  • 相关阅读:
    OCR中表格识别及WORD生成
    太阳能跟踪系统
    QA300太阳能移动电源
    OCR之表格识别
    2012112
    2012123
    2012121
    2011101
    201191
    2011828
  • 原文地址:https://www.cnblogs.com/tomori/p/13758289.html
Copyright © 2020-2023  润新知