zoukankan      html  css  js  c++  java
  • [POJ 2785] 4 Values whose Sum is 0

    [题目链接]

               http://poj.org/problem?id=2785

    [算法]

             中途相遇法

    [代码]

            

    #include <algorithm>  
    #include <bitset>  
    #include <cctype>  
    #include <cerrno>  
    #include <clocale>  
    #include <cmath>  
    #include <complex>  
    #include <cstdio>  
    #include <cstdlib>  
    #include <cstring>  
    #include <ctime>  
    #include <deque>  
    #include <exception>  
    #include <fstream>  
    #include <functional>  
    #include <limits>  
    #include <list>  
    #include <map>  
    #include <iomanip>  
    #include <ios>  
    #include <iosfwd>  
    #include <iostream>  
    #include <istream>  
    #include <ostream>  
    #include <queue>  
    #include <set>  
    #include <sstream>  
    #include <stdexcept>  
    #include <streambuf>  
    #include <string>  
    #include <utility>  
    #include <vector>  
    #include <cwchar>  
    #include <cwctype>  
    #include <stack>  
    #include <limits.h>
    using namespace std;
    #define MAXN 4010
    
    int i,j,n,ans,l,r;
    vector< int > x,y;
    int a[MAXN],b[MAXN],c[MAXN],d[MAXN];
    
    int main() 
    {
            
            while (scanf("%d",&n) != EOF)
            {
                    for (i = 1; i <= n; i++) scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
                    x.clear();
                    y.clear();
                    for (i = 1; i <= n; i++)
                    {
                            for (j = 1; j <= n; j++)
                            {
                                    x.push_back(a[i] + b[j]);        
                            }    
                    } 
                    for (i = 1; i <= n; i++)
                    {
                            for (j = 1; j <= n; j++)
                            {
                                    y.push_back(c[i] + d[j]);
                            }
                    }
                    sort(x.begin(),x.end());
                    sort(y.begin(),y.end());
                    ans = 0;
                    for (i = 0; i < x.size(); i++)
                    {
                            l = lower_bound(y.begin(),y.end(),-x[i]) - y.begin();
                            r = upper_bound(y.begin(),y.end(),-x[i]) - y.begin();    
                            r--;
                            if (y[r] == -x[i]) ans += r - l + 1;
                            else continue;
                    }
                    printf("%d
    ",ans);
            }
            
            return 0;
        
    }
  • 相关阅读:
    androidlayout_weight的使用
    软件开发中的真理.
    apk,task,android:process与android:sharedUserId的区别
    WIFI连接
    go simple web server
    echo命令
    shell if
    linux grep命令(包括正则)
    make命令和Makefile文件
    linux中grep命令的用法
  • 原文地址:https://www.cnblogs.com/evenbao/p/9365384.html
Copyright © 2011-2022 走看看