这题留以记录学习。
#include <iostream>
#include <algorithm>
#include <cstdio>
#define INF 4005*4005
using namespace std;
int st[INF];
int main()
{
int a[4005],b[4005],c[4005],d[4005];
int t,n,k=0,l;
cin >> t;
while(t--)
{
cin >> n;l=0;
for(int i=0;i<n;i++)
scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
st[l++]=a[i]+b[j];
sort(st,st+l);
int sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
sum+=upper_bound(st,st+l,-c[i]-d[j])-lower_bound(st,st+l,-c[i]-d[j]);
if(k==0) cout << sum << endl;
else cout << endl << sum << endl;
k++;
}
return 0;
}
学到了
sum+=upper_bound(st,st+l,-c[i]-d[j])-lower_bound(st,st+l,-c[i]-d[j]);
利用upper lower 确定这个数的存在与否且存在几个