题解
2024-05-13 13:10:22
发布于:广东
9阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
string a[105], x;
int ct;
bool find(int left, int right){//二分查找(想省时间想疯了,实际上在n=20的情况下没毛用
if(a[left] > x || a[right] < x) return 0;
if(left == right) return 1;
int mid = (left + right) / 2;
return find(left, mid) || find(mid + 1, right);//没错,我用的是分治
}
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> a[i];
}sort(a + 1, a + n + 1);//排序,方便查找
while(m--){
cin >> x;
ct += find(1, n);
}cout << ct;
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个