题解 | 代理服务器
#include <bits/stdc++.h>
using namespace std;
struct cp {
string x;
int f;
};
int isAU(cp a[],int n) {
for(int i=0; i<n; i++) {
if(a[i].f==0)return 0;
}
return 1;
}
int main() {
int n,m;
while(cin>>n) {
cp a[n];
string s;
for(int i=0; i<n; i++) {
cin>>a[i].x;
a[i].f=0;
}
cin>>m;
int ans=0;
for(int i=0; i<m; i++) {
cin>>s;
for(int i=0; i<n; i++) {
if(a[i].x==s)a[i].f=1;
if(isAU(a,n)==1) {
for(int i=0; i<n; i++) {
a[i].f=0;
}
a[i].f=1;
ans++;
}
}
}
ans=ans==m?-1:ans;
cout<<ans<<endl;
}
}
这个题目对于过判定的规则没写清楚,根据评论区发现的规则如上,代理服务器的地址被全部访问到的时候,关闭此次访问,进入下一次,并且最后一次访问计入下一次的访问中,也就是最后一个关闭的端口下一次也是关闭的,然后按照这个逻辑去写就可以了,我这里用另一个struct,你也可以用map,更快,这个方便c


