stl的binary_search的应用,这个题目就是排序然后二分查找,注意的地方就是判断重复的方法。直接附代码。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int ko[100010];
int main()
{
int T,n,m,i,sum,cha;
cin>>T;
while(T--)
{
sum=0;
cin>>n>>m;
for(i=1;i<=n;i++)
scanf("%d",&ko[i]);
sort(ko+1,ko+1+n,cmp);
for(i=1;i<=n;i++)
{
cha=m-ko[i];
if(i==1||ko[i]!=ko[i-1])
{
if(binary_search(ko+1,ko+1+n,cha))
sum=sum+1;
}
}
cout<<sum<<endl;
}
return 0;
}