POJ 2785 4 Values whose Sum is 0 [二分]
2015-01-11 10:40
579 查看
传送门
4 Values whose Sum is 0
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
Sample Output
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).
Source
Southwestern Europe 2005
sign,抱着脑袋想了好久怎么用hash做,就是没想着用二分,,,,,,
13773503 | njczy2010 | 2785 | Accepted | 25248K | 7079MS | G++ | 1423B | 2015-01-11 10:26:48 |
Time Limit: 15000MS | Memory Limit: 228000K | |
Total Submissions: 16102 | Accepted: 4659 | |
Case Time Limit: 5000MS |
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 -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).
Source
Southwestern Europe 2005
sign,抱着脑袋想了好久怎么用hash做,就是没想着用二分,,,,,,
#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cmath> #include<queue> #include<map> #include<set> #include<stack> #include<string> #define N 4002 #define M 10 #define mod 1000000007 //#define p 10000007 #define mod2 1000000000 #define ll long long #define LL long long #define eps 1e-9 #define inf 0x3fffffff #define maxi(a,b) (a)>(b)? (a) : (b) #define mini(a,b) (a)<(b)? (a) : (b) using namespace std; int x[N*N]; int a ,b ,c ,d ; ll ans; int k; int n; void ini() { int i,j; ans=0; for(i=1;i<=n;i++){ scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]); } k=0; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ x[k]=a[i]+b[j];k++; } } sort(x,x+k); } void solve() { int i,j; int te; int t1,t2; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ te=-c[i]-d[j]; t1=lower_bound(x,x+k,te)-x; t2=upper_bound(x,x+k,te)-x; ans+=(ll)(t2-t1); } } } void out() { printf("%I64d\n",ans); } int main() { //freopen("data.in","r",stdin); // freopen("data.out","w",stdout); //scanf("%d",&T); //for(int ccnt=1;ccnt<=T;ccnt++) //while(T--) while(scanf("%d",&n)!=EOF) { ini(); solve(); out(); } return 0; }
相关文章推荐
- POJ 2785 4 Values whose Sum is 0(双向搜索+二分)
- poj 2785 4 Values whose Sum is 0 (二分+sort)
- 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 (二分+枚举)
- 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(二分)
- 4 Values whose Sum is 0 POJ - 2785 (二分)
- ACM-二分-POJ-2785-4 Values whose Sum is 0
- POJ 2785:4 Values whose Sum is 0 二分
- Poj 2785 4 Values whose Sum is 0【二分】
- CSU-ACM2017暑假集训2-二分搜索 poj-2785-4 Values whose Sum is 0
- POJ - 2785 4 Values whose Sum is 0 —— 二分
- POJ - 2785 : 4 Values whose Sum is 0(二分、STL上下界函数)