POJ 2785 4 Values whose Sum is 0(折半搜索)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2785 4 Values whose Sum is 0(折半搜索)相关的知识,希望对你有一定的参考价值。

题目链接:http://poj.org/problem?id=2785

题意:4个集合里各取一个数使得之和为0,问有多少种取法

题解:暴力4个for会超时,所以两个合并一下,然后搜索呗

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 const int N=4444;
 7 int A[N],B[N],C[N],D[N],E[N*N];
 8 
 9 int main(){
10     int n,ans=0;
11     scanf("%d",&n);
12     for(int i=0;i<n;i++) scanf("%d%d%d%d",&A[i],&B[i],&C[i],&D[i]);
13     for(int i=0;i<n;i++){
14         for(int j=0;j<n;j++){
15             E[i+j*n]=(A[i]+B[j]);
16         }
17     }
18     sort(E,E+n*n);
19     for(int i=0;i<n;i++){
20         for(int j=0;j<n;j++){
21             int cd=-(C[i]+D[j]);
22             ans+=(upper_bound(E,E+n*n,cd)-lower_bound(E,E+n*n,cd));
23         }
24     }
25     printf("%d\n",ans);
26     return 0;
27 }

 

以上是关于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 (二分)