博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4 Values whose Sum is 0
阅读量:5303 次
发布时间:2019-06-14

本文共 1053 字,大约阅读时间需要 3 分钟。

题意:四个元素个数相等的A,B,C,D,问a+b+c+d=0的个数$(a\in{A},b\in{B},c\in{C},d\in{D})$,$n<=10^3$

 

所以

$n^4$????

肯定不行的啊

用sum1处理出a+b的和

用sum2处理出c+d的和

然后枚举sum1,二分找sum2,求ans

然而。。。。。WA

 

原因:可能在sum2中有相同元素,然而只算了一次

改:不用判断是否=0,求一个upper_bound和一个lower_bound,加上它们的差即可

#include
#include
#include
using namespace std;int n;int a[4020];int b[4020];int c[4020];int d[4020];int sum1[16005000];int sum2[16005000];int len;int ans;int main(){ ios::sync_with_stdio(false); ans=0; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i]>>d[i]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) sum1[++len]=a[i]+b[j]; len=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) sum2[++len]=c[i]+d[j]; sort(sum2+1,sum2+len+1); for(int i=1;i<=len;i++) { int cnt=upper_bound(sum2+1,sum2+len+1,-sum1[i])-sum2; int pos=lower_bound(sum2+1,sum2+len+1,-sum1[i])-sum2; ans=ans+cnt-pos; } cout<
<

 

转载于:https://www.cnblogs.com/olinr/p/9432130.html

你可能感兴趣的文章
COM Tip(2)
查看>>
stp协议
查看>>
Java通过JDBC 进行Dao层的封装
查看>>
cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded 解决方法
查看>>
webstorm常用功能快捷方式
查看>>
获取类名函数的方法
查看>>
mysql 数据库性能优化之SQL优化
查看>>
Shell调试
查看>>
Python 异常结构
查看>>
android一些系统相关的东西
查看>>
linux文件系统命令(6)---touch和mkdir
查看>>
最终有SpringMvc与Struts2的对照啦
查看>>
【github课程】创建github仓库和库创建一个版本号,并添加到存储库文件的版本号...
查看>>
vim添加自己//解决方案
查看>>
POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
查看>>
MVC配置中的 name和behaviorConfiguration
查看>>
angularjs内置指令 - form
查看>>
Python面试题(练习三)
查看>>
我是“坚守者”还是"背叛者"?
查看>>
谈谈个人网站的建立(七)—— 那些建站必备的插件
查看>>