传送门

解题思路

  四个数组一起做有点炸。先把他们合并成两个数组,然后让一个数组有序,枚举另一个数组的元素,二分即可。时间复杂度\(O(n^2logn^2)\)

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std;
const int MAXN = 4005; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
} int A[MAXN*MAXN],B[MAXN*MAXN],n,a[MAXN],b[MAXN],c[MAXN],d[MAXN];
int num[MAXN*MAXN],cnt,cnt2,cpy[MAXN*MAXN];
long long ans; int main(){
n=rd();int x,y,w,z;
for(int i=1;i<=n;i++)
a[i]=rd(),b[i]=rd(),c[i]=rd(),d[i]=rd();
for(register int i=1;i<=n;i++)
for(register int j=1;j<=n;j++) A[++cnt]=a[i]+b[j],B[cnt]=c[i]+d[j];
sort(A+1,A+1+cnt);A[0]=(1<<28)+1;
for(register int i=1;i<=cnt;i++){
if(A[i]==A[i-1]) num[cnt2]++;
else cpy[++cnt2]=A[i],num[cnt2]=1;
}
// for(int i=1;i<=cnt2;i++) cout<<cpy[i]<<" ";
// A[++cnt2]=1;A[++cnt2]=2;A[++cnt2]=8;B[++cnt]=1;B[++cnt]=-2;B[++cnt]=-8;
for(register int i=1;i<=cnt;i++) {
x=lower_bound(cpy+1,cpy+1+cnt2,-B[i])-cpy;
// cout<<x<<endl;
if(cpy[x]==-B[i]) ans+=num[x];
}
printf("%lld\n",ans);
return 0;
}

最新文章

  1. 数据预处理中归一化(Normalization)与损失函数中正则化(Regularization)解惑
  2. First glance in Go
  3. mysql添加外键错误
  4. [sicp]huffman编码的实现 @ Scheme
  5. HDU 4036 存疑题目,数论 难度:1
  6. Android牟利之道(一)--界面嵌入有米广告
  7. mysql基础知识(5)--视图
  8. Spring MVC 教程
  9. 原生sql语句执行
  10. Struts2学习笔记(一) Struts2配置文件的配置
  11. informix建临时表索引
  12. 配置webpack.config.js中的文件
  13. ArcGIS Pro开发Web3D应用(3)——Server/Portal授权服务开发
  14. Keepalived+Haproxy高可用负载均衡群集
  15. etcd集群的搭建
  16. Android漏洞——将Android恶意代码隐藏在图片中
  17. vue里面使用Velocity.js
  18. [Canvas]走近的女孩
  19. C语言 &#183; C++中map的用法详解
  20. &lt;&lt;、|=、&amp;的小例子

热门文章

  1. 如何将sql查询出的列名用注释代替?
  2. 标准 IO 测试 标准输出,输入,出错缓冲大小;全缓冲文本流大小
  3. asp.net MVC项目,localhost响应时间过长
  4. List之去重
  5. leetcood学习笔记-203-移除链表元素
  6. Linux环境相关
  7. 线性基算贡献——19牛客多校第一场H
  8. Python 爬取拉钩网工作岗位
  9. C++——函数模板和类模板
  10. 剑指offer——09青蛙跳台阶