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上的一道题,好了,我们一起来看看题意吧:

考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!

题目传送门: POJ 2785 4 Values whose Sum is 0

思路:

这道题你要是写个4重循环那可就太惨了,其实可以是2重循环的,我们计算前两列的分别两两相加的和,用b数组装,然后计算后两列的分别两两相加的和,用c数组装,我们只需要计算在c数组中有多少与b数组构成相反数,具体的直接看代码吧!

我们来看看成功AC的代码吧:

#include<iostream>
#include<algorithm>
using namespace std;
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
const int N=4010;
int a[N][6];
int n;
ll b[N*N],c[N*N];
ll ans;
int main(){
    ios;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i][1]>>a[i][2]>>a[i][3]>>a[i][4];
    ll cnt=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++){
        b[++cnt]=a[i][1]+a[j][2];
        c[cnt]=a[i][3]+a[j][4];
    }
    sort(c+1,c+1+cnt);//记住给c数组排序
    for(int i=1;i<=cnt;i++){
        ans+=upper_bound(c+1,c+1+cnt,-b[i])-lower_bound(c+1,c+1+cnt,-b[i]);
    }
    cout<<ans<<"\n";
    return 0;
}


相关文章
|
5月前
|
应用服务中间件 C++ AHAS
hdu1327 Definite Values
hdu1327 Definite Values
24 0
|
10月前
|
存储 算法 安全
LeetCode - #1 Two Sum
我们社区从本期开始会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。
LeetCode - #1 Two Sum
|
11月前
|
机器学习/深度学习
leetcode - two-sum
leetcode - two-sum
64 0
POJ 1844 Sum
POJ 1844 Sum
81 0
|
算法 机器学习/深度学习
|
机器学习/深度学习 人工智能
LeetCode - 15. 3Sum
15. 3Sum Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个数列,找出这个数列中和为0的三元组.
821 0