NYOJ626 intersection set
用C++结果TLE了三次,换成C就过了..时间:744,内存:424
#include <cstdio>
#include <algorithm>
#define MAX 50000 + 2
int a[MAX];
using namespace std;
int main(){
int m, n, i, t, sum;
while(scanf("%d%d", &m, &n) == 2){
for(i = 0; i != m; ++i)
scanf("%d", &a[i]);
sort(a, a + m);
for(i = sum = 0; i != n; ++i){
scanf("%d", &t);
if(binary_search(a, a + m, t))
++sum;
}
printf("%d\n", sum);
}
return 0;
}优化后的下标索引法:时间:308,内存:620
#include <cstdio>
#include <cstring>
#define MAX 100000 + 2
int a[MAX];
int main(){
int m, n, i, t, sum;
while(scanf("%d%d", &m, &n) == 2){
sum = 0;
while(m--){
scanf("%d", &t);
a[t] = 1;
}
while(n--){
scanf("%d", &t);
if(a[t]) ++sum;
}
printf("%d\n", sum);
memset(a, 0, sizeof(a));
}
return 0;
}
浙公网安备 33010602011771号