POJ 2785 折半搜索
Posted huangzzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2785 折半搜索相关的知识,希望对你有一定的参考价值。
https://vjudge.net/problem/POJ-2785
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<set> #include<algorithm> #include<map> #define maxn 4005 typedef long long ll; using namespace std; int n; ll a[maxn],b[maxn],c[maxn],d[maxn]; ll cd[maxn*maxn];//记录c和d数组的和的数组 int main() { while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { cin>>a[i]>>b[i]>>c[i]>>d[i]; } //把c和d的和组成cd数组 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); ll res=0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) { //cout<<"a"<<endl; ll ans=-(a[i]+b[j]); res+=upper_bound(cd,cd+n*n,ans)-lower_bound(cd,cd+n*n,ans); // 返回第一个大于等于ans的位置 返回第一个大于ans的位置 //最后返回相等ans的位置 } cout<<res<<endl; } return 0; }
以上是关于POJ 2785 折半搜索的主要内容,如果未能解决你的问题,请参考以下文章
POJ 2785 4 Values whose Sum is 0(折半搜索)
C - 4 Values whose Sum is 0 POJ - 2785 (折半枚举)(二分搜索)
POJ - 2785 - 4 Values whose Sum is 0 - 二分折半查找