POJ 2785 4 Values whose Sum is 0

Posted 孤音x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;


谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!

以上是关于POJ 2785 4 Values whose Sum is 0的主要内容,如果未能解决你的问题,请参考以下文章

poj 2785 4 Values whose Sum is 0

4 Values whose Sum is 0 :POJ - 2785

4 Values whose Sum is 0 POJ - 2785

POJ 2785 4 Values whose Sum is 0

poj 2785 4 Values whose Sum is 0(折半枚举(双向搜索))

POJ - 2785 :4 Values whose Sum is 0 (二分)