您的位置:首页 > 产品设计 > UI/UE

POJ 2785 A Values whose Sum is 0 ( 拆合+排序+二分 )

2014-10-22 18:13 429 查看
有 4  个 N 个元素的数组,每个数组各取一个数字,使得加起来和为 0 的方法个数。

#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

#define MAXN 4010

int A[MAXN];
int B[MAXN];
int C[MAXN];
int D[MAXN];
int CD[MAXN * MAXN];

int main(){

int n;
long long res = 0;

cin >> n;

for( int i = 0; i < n; ++i ){
cin >> A[i] >> B[i] >> C[i] >> D[i];
}

for( int i = 0; i < n; ++i ){
for( int j = 0; j < n; ++j ){
CD[i * n + j] = C[i] + D[j];
}
}

sort( CD, CD + n * n );

for( int i = 0; i < n; ++i ){
for( int j = 0; j < n; ++j ){
int cd = - ( A[i] + B[j] );
res += upper_bound( CD, CD + n * n, cd ) - lower_bound( CD, CD + n * n, cd );
}
}

cout << res << endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: