P9831 [ICPC2020 Shanghai R] Gitignore 题解
P9831 题目
解题思路
很明显是用贪心算法解决的题目。
如果一个文件夹内需要忽略所有文件时,我们就可以把这一整个文件夹整体忽略,否则将此文件夹里需要忽略的文件依次忽略。
用映射 map 解决即可。
Code
#include<bits/stdc++.h>//万能头
using namespace std;
struct op
{
string s;
}a[101];
signed main()
{
int t;
scanf("%d",&t);
for(int ii=1;ii<=t;ii++)
{
int n,m,c=0,i=0;
scanf("%d%d",&n,&m);
int N=n;
while(N--)
cin>>a[++i].s;
map<string,bool> mapp;
while(m--)
{
string s1,s2="";
cin>>s1;
for(i=0;i<s1.size();i++)
{
if(s1[i]=='/')
mapp[s2]=true;
s2+=s1[i];
}
}
map<string,bool> v;
i=0;
while(n--)
{
i++;
string s1="";
bool pd=true;
for(int j=0;j<a[i].s.size();j++)
{
int pd2=false;
if(a[i].s[j]=='/')
{
if(mapp[s1]==true)
pd=true;
else
{
if(v[s1])
pd=false;
v[s1]=true;
pd2=true;
}
if(pd2)
break;
}
s1+=a[i].s[j];
}
if(pd)
c++;
}
printf("%d\n",c);
}
return 0;
}