• CodeForces 66C Petya and File System (实现)


    模拟题,map搞一搞。要想清楚一个结点应该是要通过一个字符串找到下一个结点,题目保证所以文件夹非空,所以只要判断一个结点是不是叶子结点就可以判断它是不是文件,用了点c11的特性。

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef map<string,int> Node;
    map<string,int>::iterator it_id;
    const int maxnd = 1e4;
    Node nds[maxnd];
    int nds_cnt;
    #define MP make_pair
    #define fi first
    #define se second
    
    inline int id(const string& s,Node& fa)
    {
        if((it_id = fa.find(s)) != fa.end()) return it_id->second;
        fa.insert(MP(s,++nds_cnt));
        return nds_cnt;
    }
    
    int curFile,curFolder;
    void dfs(int u)
    {
        for(auto it: nds[u]){
            if(nds[it.se].empty()) { curFile++; continue; }
            else curFolder++;
            dfs(it.se);
        }
    }
    
    #define cer(x) cout<<x<<endl;
    #define PB push_back
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        ios_base::sync_with_stdio(false);
        string s;
        while(cin>>s){
            auto u = nds;
            u = nds+id(s.substr(0,1),*u);
            s.PB('\');
            for(int i = 3, j = 3; i < (int)s.size(); i++){
                if(s[i] == '\'){
                    u = nds+id(s.substr(j,i-j),*u);
                    j = i+1;
                }
            }
        }
        int maxFolder = 0,maxFile = 0;
    
        for(auto it: nds[0]){
            for(auto it2: nds[it.se]){
                curFolder = curFile = 0;
                dfs(it2.se);
                maxFolder = max(maxFolder,curFolder);
                maxFile = max(maxFile,curFile);
            }
        }
        cout<<maxFolder<<' '<<maxFile<<endl;
        return 0;
    }
  • 相关阅读:
    数据库索引的作用和长处缺点
    Spring的依赖注入
    Spring+Ibatis集成开发实例
    IOS开发之类和对象
    关于C++ const 的全面总结
    包管理器Bower使用手冊之中的一个
    项目总算完工了
    git reset and git checkout
    unity3D中协程和线程混合
    【剑指offer】左旋转字符串
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4784178.html
Copyright © 2020-2023  润新知