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