传送门:http://poj.org/problem?id=2785

解题思路:

从这四个数列中选择的话总有n的4次方中情况,所以全部判断一遍不可行。不过将他们对半分成AB和CD再考虑的话就可以解决了。从两个数列中选择的话只有n的2次方中组合。所以可以枚举。从A,B中取出a,b后,为了使总和为0则需要从C,D中取出a+b=-(c+d);先将a和b数组的和存在一个数组ab里面,再将c和d相加的相反数-(c+d)在ab数组里面查找,用的是二分查找。

实现代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int MAXN=4005;int a[MAXN][4];
int b[MAXN*MAXN];void solve(int n){memset(b,0,sizeof(b));for(int i=0;i<n;i++)for(int j=0;j<n;j++)b[i*n+j]=a[i][0]+a[j][1];sort(b,b+(n*n));int ans=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){int tmp=-(a[i][2]+a[j][3]);ans+=upper_bound(b,b+(n*n),tmp)-lower_bound(b,b+(n*n),tmp);}printf("%d\n",ans);}int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++)for(int j=0;j<4;j++)scanf("%d",&a[i][j]);solve(n);
}

转载于:https://www.cnblogs.com/IKnowYou0/p/6665104.html

POJ 2785 4 Values whose Sum is 0相关推荐

  1. POJ 2785: 4 Values Whose Sum is 0

    链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21897 题意:就是给你4个数组,现在问你有多少种方案,使得在每个数组中 ...

  2. poj2785 4 Values whose Sum is 0

    原题链接: poj2785 4 Values whose Sum is 0 题意:给出元素都为n的4个数组A,B,C,D,要从每个数组中各取一个数,求这四个数和为0的次数,一个数列有多个相同数字时,当 ...

  3. 【POJ - 2785】4 Values whose Sum is 0 (二分,折半枚举)

    题干: The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, com ...

  4. POJ 2785: four values sum is zero

    问题描述: 给定四个长度为n的数组A, B, C, D. 要求从每个数组中取一个数, 这样得到四个数, 并且这四个数的之和为0. 求这样组合的个数. 限制条件: 1<= n <= 4000 ...

  5. 【ACM】Uva 1152 (4 Values whose Sum is 0) 二分查找lower_bound() 和upper_bound()的使用

    [问题描述] The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, ...

  6. uva1152 - 4 Values whose Sum is 0(hash或STL技巧ac)

    题目大意:给定4个n(1 <= n <= 4000)元素集合A, B, C, D,要求分别从中选取一个元素a, b, c, d,使得a+b+c+d = 0,问有多少种选法. method ...

  7. uva 1152 ——4 Values whose Sum is 0

    题意:给定4个n元素集合,要求从每个集合中选择一个数,使得A+B+c+d==0,问存在多少种方法. 思路:枚举+hash判断.直接枚举4次方的算法会超,那么只需要枚举ab,然后在c+d的和中查找等于- ...

  8. POJ 2785 有多少种4个数相加等于0的方案(二分查找 or hash)

    文章目录 1.二分查找法 1.1 思路: 1.2 AC代码 2.hash查找法 2.1 思路: 2.2 Wrong Answer 代码 2.3 Time Limit Exceeded 代码 2.4 偷 ...

  9. Python Numpy多维数组.sum(axis=0/1/2...) 详解

    Python Numpy多维数组.sum(axis=0/1/2-) 详解 numpy中axis取值的说明 首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维 ...

最新文章

  1. centos 7.4 上安装neo4j并测试
  2. TensorFlow serving远程访问引擎的容器部署
  3. 【MapReduce】
  4. oc 实例变量可见度、方法
  5. simulink仿真学习(实现半波整流、方波输出) day1
  6. 最近素数问题——C语言
  7. 怎么更改wifi频段_科普 | 你了解WiFi信号扩展器吗?
  8. python--之np.any,np.a;;
  9. java装箱与拆箱_【转】java 自动装箱与拆箱
  10. iphone自适应屏幕亮度_如何降低iPhone的亮度低于iOS允许的亮度
  11. golang switch使用
  12. Ubuntu关闭开机自启动服务
  13. 使用Python进行OpenCV颜色检测和过滤
  14. 关于api-ms-win-crt-runtimel1-1-0.dll缺失引发的解决方案
  15. ZB雕刻用鼠标和数位板的差别大不大?怎么买手绘板?ZB雕刻手绘是不是很重要?
  16. Android集成腾讯X5浏览器内核库
  17. 对字符串进行一个顺序排列
  18. 下载Xcode历史版本方法
  19. 尚硅谷SpringMVC笔记
  20. 验收报告模版(转载)

热门文章

  1. 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
  2. 解决gnome3 不能设置无线网络属性
  3. Android应用签名作用,安卓app签名功能
  4. shell去掉字符两端字符_Shell脚本8种字符串截取方法总结
  5. bgb邻居关系建立模型_学习开发知识图谱中的长期关系依赖
  6. HCIA- Datacom认证增加了SDN跟自动化编程
  7. Knative Serving 进阶: Knative Serving SDK
  8. 手机html图片模糊,css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose...
  9. 高效程序员的45个习惯 pdf_高效瑜伽人的 5 个习惯,你get到了几个?
  10. 远程定位gps linux,GPS(NMEA)数据解析