zoukankan      html  css  js  c++  java
  • HDU2141还是二分查找

    Can you find it?

    Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others) Total Submission(s): 7898    Accepted Submission(s): 2052

    Problem Description
    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.
     
    Input
    There are many cases. Every data case is described as followed: In the first line there are three integers L, N, M, in the second line there are L integers represent the sequence A, in the third line there are N integers represent the sequences B, in the forth line there are M integers represent the sequence C. In the fifth line there is an integer S represents there are S integers X to be calculated. 1<=L, N, M<=500, 1<=S<=1000. all the integers are 32-integers.
     
    Output
    For each case, firstly you have to print the case number as the form "Case d:", then for the S queries, you calculate if the formula can be satisfied or not. If satisfied, you print "YES", otherwise print "NO".
     
    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
     
    Author
    wangye
     
    Source
     
    Recommend
    威士忌
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <cstdlib>
     6 #include <algorithm>
     7 #include <vector>
     8 #include <stack>
     9 #include <queue>
    10 #include <cassert>
    11 #include <set>
    12 #include <sstream>
    13 #include <map>
    14 using namespace std ;
    15 #ifdef DeBUG
    16 #define bug assert
    17 #else
    18 #define bug //
    19 #endif
    20 #define zero {0}
    21 const int MAXN=1000;
    22 int L,M,N;
    23 int a[MAXN],b[MAXN],c[MAXN];
    24 int ab[300000];
    25 int S,n;
    26 int cmp(const void*a,const void*b)
    27 {
    28     return *(int *)a-*(int *)b;//升序 
    29 }
    30 int find(int min,int max,int x)
    31 {
    32     int mid;
    33     while(min<=max)
    34     {
    35         mid=(min+max)/2;
    36         if(ab[mid]==x)
    37         return 1;
    38         if(ab[mid]>x)
    39         max=mid-1;
    40         if(ab[mid]<x)
    41         min=mid+1;
    42     }
    43     return 0;
    44 }
    45 int main()
    46 {
    47     #ifdef DeBUG
    48         freopen("C:\Users\Sky\Desktop\1.in","r",stdin);
    49     #endif
    50     
    51     int i,j,k;
    52     int cas=1;
    53     int num;
    54     while(scanf("%d%d%d",&L,&N,&M)!=EOF)
    55     {
    56         num=0;
    57         for(i=0;i<L;i++)
    58         scanf("%d",&a[i]);
    59         for(i=0;i<N;i++)
    60         scanf("%d",&b[i]);
    61         for(i=0;i<M;i++)
    62         scanf("%d",&c[i]);
    63         scanf("%d",&S);
    64         for(i=0;i<L;i++)//将两个数组合并成一个数组,使其为两个数组中各个不同元素的和 
    65         for(j=0;j<N;j++)
    66         ab[num++]=a[i]+b[j];
    67     //    qsort(c,M,sizeof(c[0]),cmp);//可排可不排 
    68         qsort(ab,num,sizeof(ab[0]),cmp);//二分查找的前提是有序的数组 
    69         printf("Case %d:
    ",cas++);
    70         while(S--&&scanf("%d",&n))
    71         {
    72             bool _flag=false;
    73             for(i=0;i<M;i++)
    74             {
    75                 if(find(0,num-1,n-c[i]))
    76                 {
    77                     _flag=true;
    78                     break;
    79                 }
    80             }
    81             if(_flag)
    82             printf("YES
    ");
    83             else
    84             printf("NO
    ");
    85         }
    86     }
    87     return 0;
    88 }
    View Code
  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/Skyxj/p/3201566.html
Copyright © 2011-2022 走看看