• Equilibrium Mobile (UVa 12166) dfs二叉树


    题目:

    思路: 方法很巧妙,参考的网上的方法。 任意一点都可以决定整棵树(根结点)的重量,设这个结点重量为 w ,位于第 depth 层,则整棵树的重量为 w<<depth。因此只要统计所有点对应的整棵树的重量所出现的次数,再用点的数量减去重量出现最多的次数即为答案。

    /* Equilibrium Mobile (UVa 12166) */
    #include <iostream>
    #include <cstring>
    #include <map>
    using namespace std;
    
    const int maxn = 1 << 20;
    
    map<long long, int> cnt;
    int sum;
    char s[maxn];
    
    void solve(int begin, int end, int depth);        // dfs 求出每个结点对应的整棵树的重量,并统计
    
    int main(){
        //freopen("input.txt", "r", stdin);
        int T;
        cin >> T;    getchar();
        while(T--){
            cin >> s;
            cnt.clear();
            sum = 0;
            solve(0, strlen(s)-1, 0);
            
            int num = 0;
            for(map<long long, int>::iterator it = cnt.begin(); it != cnt.end(); it++){    //求出每个重量对应的个数的最大值 
                num = max(num, it->second);
            }
            
            cout << sum - num << endl;        //一共有 sum 个点,减去 num 就是要修改的个数 
        }
    } 
    
    void solve(int begin, int end, int depth){
        if(s[begin] == '['){
            int  t = 0;
            for(int i=begin+1; ; i++){
                if(s[i] == '[')    t++;
                if(s[i] == ']') t--;
                if(t==0 && s[i] == ','){
                    solve(begin+1, i-1, depth+1);
                    solve(i+1, end-1, depth+1);
                    break;
                }
            }
        }else{
            long long num = 0;
            for(int i=begin; i<=end; i++){
                num = num*10 + s[i] - '0';
            }
            cnt[num << depth]++;
            sum++;
        }
    }
  • 相关阅读:
    Android 中的selector
    Android 中SimpleDateFormat的使用注意
    Android 和iOS中 View的滚动
    Android 和iOS中 Gesture 和 Touch
    iOS 的UIWindow 类研究
    iOS keyChain 的使用
    关于Intent ,Task, Activity的理解
    Android Broadcast 和 iOS Notification
    Android 程序中得到root activity的引用
    ios中的addChildViewController 和 android中的fragment
  • 原文地址:https://www.cnblogs.com/lighter-blog/p/6048264.html
Copyright © 2020-2023  润新知