题目大意:给你n个路径,输入第i个路径时输出前i个路径一共有多少文件夹(根目录不算)。
解题思路:由于数据并不大,我们可以用字典树+STL_map储存每个文件夹的子文件夹,然后每次按照路径寻找即可。
注意文件夹名字可能为空,所以对于每个输入的路径,文件夹数量以读到的‘/’的数量为准。
注意动态开点会炸。
C++ Code:
#include<map> #include<iostream> #include<cstdlib> #include<string> #include<cstdio> using namespace std; int n,p,wjj; string s,cx[1005]; map<string,int>tree[70005]; int main(){ wjj=0; ios::sync_with_stdio(false); cin>>n; for(;n--;){ cin>>s; int p=-1; string nw=""; for(int i=0,l=s.length();i<l;++i) if(s[i]=='/')cx[++p]=nw,nw="";else nw+=s[i]; cx[++p]=nw; int now=0; for(int i=1;i<=p;++i){ if(!tree[now].count(cx[i])){ tree[now][cx[i]]=++wjj; } now=tree[now][cx[i]]; } printf("%d ",wjj); } return 0; }