题意:有10w个点,问你选4个点,能组成平行于坐标轴的正方形有多少个
题解:不知道正解,我的做法就是暴力的基础上优化一点,每次按x排好序,每次枚举的2个点都是x相同的
这样算是个优化?但并不能过,因为可能一列全是x相同的,于是又判了一次对于这个点,x相同的多还是y相同的多
具体实现用了个set没想到就过了
1 #include2 using namespace std; 3 #define N 2000006 4 set x[N],y[N]; 5 int n,a[N],b[N],ans=0; 6 int main() 7 { 8 scanf("%d",&n); 9 for (int i=1;i<=n;i++)10 {11 scanf("%d%d",&a[i],&b[i]);12 a[i]+=1e6;b[i]+=1e6;13 x[a[i]].insert(b[i]);14 y[b[i]].insert(a[i]);15 }16 for (int i=1;i<=n;i++)17 {18 if (x[a[i]].size()