4 Values whose Sum is 0 POJ
来源:互联网 发布:做淘宝客服工资怎么样 编辑:程序博客网 时间:2024/05/22 02:13
4 Values whose Sum is 0
Time Limit: 15000MS Memory Limit: 228000KTotal Submissions: 22637 Accepted: 6848Case Time Limit: 5000MS
Description
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a + b + c + d = 0 . In the following, we assume that all lists have the same size n .
Input
The first line of the input file contains the size of the lists n (this value can be as large as 4000). We then have n lines containing four integer values (with absolute value as large as 228 ) that belong respectively to A, B, C and D .
Output
For each input file, your program has to write the number quadruplets whose sum is zero.
Sample Input
6-45 22 42 -16-41 -27 56 30-36 53 -37 77-36 30 -75 -4626 -38 -10 62-32 -54 -6 45
Sample Output
5
Hint
Sample Explanation: Indeed, the sum of the five following quadruplets is zero: (-45, -27, 42, 30), (26, 30, -10, -46), (-32, 22, 56, -46),(-32, 30, -75, 77), (-32, -54, 56, 30).
题目分析:直接枚举的复杂度是O(n^4) 明显TL ,用二分进行简化的话是O(n^2) 。首先枚举前两列的和,然后再从后两列中查找和为前两列和的结果就可以了
STL大法好啊:upper_bound会在数组中找到这个数最大能插入的位置;lower_bound会在数组中找到这个数最小能插入的位置;两者相减正好是排好序之后的数组中某个元素的个数
代码如下:
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;const int maxx = 4005;int A[maxx],B[maxx],C[maxx],D[maxx];int E[maxx * maxx],F[maxx * maxx];int t;int main(){scanf("%d",&t);for(int i=0;i<t;i++){ scanf("%d%d%d%d",&A[i],&B[i],&C[i],&D[i]);}int k1=0,k2=0;for(int i=0;i<t;i++)//合并前两个数组和后两个数组{ for(int j=0;j<t;j++) { E[k1++] = A[i] + B[j]; F[k2++] = C[i] + D[j]; }}sort(E,E+k1);//给第一个合并后的数组进行排序int sum = 0;for(int i=0;i<k2;i++){ int aa = upper_bound(E,E+k1,-1*F[i])-lower_bound(E,E+k1,-1*F[i]);//二分查找,因为相加要等于零,所以直接查找当前数的负数看存在多少个。 sum+=aa;}printf("%d\n",sum);return 0;}
阅读全文
0 0
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- POJ 2785 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0 二分
- POJ 2785:4 Values whose Sum is 0
- POJ 2785(4 Values whose Sum is 0)
- poj 2785 4 Values whose Sum is 0
- poj 2785 4 Values whose Sum is 0 (二分+枚举)
- poj 2785 4 Values whose Sum is 0(hash)
- POJ 2785: 4 Values Whose Sum is 0
- poj 2785 4 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0 Hash!
- poj 2785 4 Values whose Sum is 0 哈希
- POJ 2785 4 Values whose Sum is 0(二分)
- POJ 2785 4 Values whose Sum is 0 二分
- ubuntu 12.04下apache 配置家目录地址
- amd64下的合法与非法地址
- 原生js未来元素事件监听的写法
- exec函数族总结
- 数据结构-线性顺序表
- 4 Values whose Sum is 0 POJ
- 巧妙的实现点阵图形显示可视化编程(C语言)
- mysql之skip-name-resolve解决外网链接客户端过慢问题
- 代理模式
- Ubuntu下安装Express框架
- 四种解析XML文件的方法
- 理解c++STL regex_research()
- maven实战(六)使用Nexus创建私服
- Spring框架学习(1)——HelloWorld