4 Values whose Sum is 0 --CSU-ACM2017暑假集训2-二分搜索
来源:互联网 发布:kettle java代码 编辑:程序博客网 时间:2024/06/16 17:17
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 2 28 ) 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 -46
26 -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).
题目意思是只要4个数只要来自4个数组的不同位置且相加为0就算一组,两个4元序列完全相等也算新的一组。
另,注释的地方跪了好多遍。
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<vector>using namespace std;int main(){ long long n; while(~scanf("%lld",&n)) { vector<long long> a,b,c,d,sum1,sum2; for(long long i=1;i<=n;i++) { long long x1,x2,x3,x4; scanf("%lld%lld%lld%lld",&x1,&x2,&x3,&x4); a.push_back(x1); b.push_back(x2); c.push_back(x3); d.push_back(x4); } for(long long i=0;i<n;i++) for(long long j=0;j<n;j++) sum1.push_back(a[i]+b[j]); for(long long i=0;i<n;i++) for(long long j=0;j<n;j++) sum2.push_back(c[i]+d[j]); sort(sum1.begin(),sum1.end()); sort(sum2.begin(),sum2.end()); long long cnt=0; for(long long i=0;i<n*n;i++)//之前写成i=1;i<=n*n;而WA了无数遍。 { long long left=lower_bound(sum2.begin(),sum2.end(),0-sum1[i])-sum2.begin(); long long right=upper_bound(sum2.begin(),sum2.end(),0-sum1[i])-sum2.begin(); cnt+=(long long)(right-left); // if(right-left!=0)cout<<sum1[i]<<endl; } cout<<cnt<<endl; }}
- CSU-ACM2017暑假集训2-二分搜索 poj-2785-4 Values whose Sum is 0
- 4 Values whose Sum is 0 --CSU-ACM2017暑假集训2-二分搜索
- 2016ACM暑假集训 - 4 Values whose Sum is 0
- csu-acm2017暑假集训2-二分搜索D
- CSU-ACM2017暑假集训2-二分搜索 hdu2119
- CSU-ACM2017暑假集训2-二分搜索 F
- CSU-ACM2017暑假集训2-二分搜索 E
- CSU-ACM2017暑假集训2-二分搜索 A
- CSU-ACM2017暑假集训2-二分搜索 poj3104-drying
- CSU-ACM2017暑假集训2-二分搜索 D
- Monthly Expense--CSU-ACM2017暑假集训2-二分搜索
- CSU-ACM2017暑假集训2-二分搜索 C
- CSU-ACM2017暑假集训2-二分搜索 hdu2141- Can you find it?
- CSU-ACM2017暑假集训2-二分搜索 poj-32732 Monthly Expense
- CSU-ACM2017暑假集训2-二分搜索 poj-2456 Aggressive cows-最大化最小值
- Can you find it? --CSU-ACM2017暑假集训2-二分搜索
- Can you solve this equation?--CSU-ACM2017暑假集训2-二分搜索
- CSU-ACM2017暑假集训2-二分搜索 poj-3258- River Hopscotch
- equals使用和重写
- test
- Hive
- Android机用移动数据流量获取也能获取mac地址的终极方法。(第二种方法)
- HDU 6034 Balala Power!
- 4 Values whose Sum is 0 --CSU-ACM2017暑假集训2-二分搜索
- hdu 1166 敌兵布阵【入门线段树 & 树状数组】
- 选择排序
- 《如何管理程序猿》
- bzoj3545[ONTAK2010]Peaks 线段树合并+离散
- LeetCode 599. Minimum Index Sum of Two Lists
- oracle 数据库 练习题2
- @font-face属性参数详细介绍
- 设计一个名为Account的类