zoukankan      html  css  js  c++  java
  • HDU 2141 Can you find it?(二分)

    题目链接:clicl here~~

    【题目大意】:

    Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numbers Ai, Bj, Ck, which satisfy the formula Ai+Bj+Ck = X.

    Sample Input

    3 3 3 1 2 3 1 2 3 1 2 3 3 1 4 10

    Sample Output

    Case 1: NO YES NO
    【解题思路】将前两个数组元素合并为一个,在和最后一个进行选择。二分合并后的数组,假设

       if(sort[mid]<ans) left=mid+1;
       else if(sort[mid]>ans) right=mid-1;
       else {flag=true;break;}

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int N=505;
    int A[N],B[N],C[N],D[N*N];
    bool get(int sort[],int k,int ans)//合并后的数组/数组元素个数/和减去第三个数组元素剩下的值
    {
        bool flag=false;
        int left=0,right=k,mid;
        while(left<=right)
        {
            mid=(left+right)>>1;
            if(sort[mid]<ans) left=mid+1;
            else if(sort[mid]>ans) right=mid-1;
            else {flag=true;break;}
        }
        return flag;
    }
    int main()
    {
        //freopen("1.txt","r",stdin);
        int l,n,z,m,S,tot=1;
        bool ok;
        while(scanf("%d%d%d",&l,&n,&m)!=EOF)
        {
            for(int i=0;i<l;i++) scanf("%d",&A[i]);
            for(int i=0;i<n;i++) scanf("%d",&B[i]);
            for(int i=0;i<m;i++) scanf("%d",&C[i]);
            int k=0;
            for(int i=0;i<l;i++)
            for(int j=0;j<n;j++) D[k++]=A[i]+B[j];
            sort(D,D+k);
            scanf("%d",&S);
            printf("Case %d:
    ",tot++);
            while(S--)
            {
                ok=false;
                scanf("%d",&z);
                for(int i=0;i<m;i++){
                if(get(D,k,z-C[i])) {ok=true;break;}
                }
                if(ok) puts("YES");
                else puts("NO");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    阿里云Centos 8.2安装LNMP环境
    TP6中缓存的使用
    TP6中命令行
    TP6中请求和响应
    TP6模型操作
    TP6中数据库操作
    TP6中验证器的使用
    TP6如何使用文件上传
    3. Longest Substring Without Repeating Characters
    1. Two Sum
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6849787.html
Copyright © 2011-2022 走看看