zoukankan      html  css  js  c++  java
  • O

    题目连接 http://acm.hust.edu.cn/vjudge/contest/121192#problem/O

    题目给出了三个数组,要求判断在三个数组中能否分别找到一个数使之三个数的和等于给定的数。有三个数组,直接用三重循环太耗时,

    可以先把两个数组相加求和得到一个新数组,在利用二分查找。

    include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int a[505],b[505],c[505];
    int dp[250025];
    int main()
    {
      int i,j,k,m,n,s,t,cas=0,p,flag;
      while(scanf("%d%d%d",&k,&m,&n)!=EOF)
      {
        for(i=0;i<k;i++)
          scanf("%d",&a[i]);
        for(i=0;i<m;i++)
          scanf("%d",&b[i]);
        for(i=0;i<n;i++)
          scanf("%d",&c[i]);
        p=0;
        for(i=0;i<k;i++)
          for(j=0;j<m;j++)
            dp[p++]=a[i]+b[j];
         sort(dp,dp+p);
         printf("Case %d:
    ",++cas);
         scanf("%d",&t);
        while(t--)
        {
         scanf("%d",&s);   flag=0;
         for(i=0;i<n;i++)
         {
           int l=0,r=p-1,mid;
           while(l<=r)
           {
             mid=(l+r)/2;
             if(dp[mid]+c[i]==s){ flag=1;break;}
             else if(dp[mid]+c[i]<s) l=mid+1;
             else if(dp[mid]+c[i]>s) r=mid-1;
           }
           if(flag) break;
        }
    
        if(flag) printf("YES
    ");
        else printf("NO
    ");
      }
    }
      return 0;
    }
  • 相关阅读:
    javascript深入理解js闭包
    hibernate 之 sql查询
    MongoDB 2.4企业版分析
    MongoDB 连接池
    GridFS实现原理
    MongoVUE破解
    mongodb 官方 手册
    mongodb的一些性能管理工具
    Python: names, values, assignment and mutability
    使用 mock 测试
  • 原文地址:https://www.cnblogs.com/Twsc/p/5701266.html
Copyright © 2011-2022 走看看