Can you find it?(二分)
来源:互联网 发布:投资软件 编辑:程序博客网 时间:2024/06/05 17:41
Can you find it?
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others)Total Submission(s): 13563 Accepted Submission(s): 3483
3 3 31 2 31 2 31 2 331410
Case 1:NOYESNO
没想到。。。合并两个数组在进行二分查找。#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
#include<list>
#include<deque>
#include<map>
#include <stdio.h>
#include <queue>
#include <stack>
#define maxn 10000+5
#define ull unsigned long long
#define ll long long
#define reP(i,n) for(i=1;i<=n;i++)
#define rep(i,n) for(i=0;i<n;i++)
#define cle(a) memset(a,0,sizeof(a))
#define mod 90001
#define PI 3.141592657
#define INF 1<<30
const ull inf = 1LL << 61;
const double eps=1e-5;
using namespace std;
ll a[510],b[510],c[510],ab[502*502];
int num;
int Find(ll x)
{
int low=0,high=num;
while(low<=high)
{
int mid=(low+high)/2;
if(ab[mid]==x) return 1;
else if(ab[mid]<x)low=mid+1;
else
{
high=mid-1;
}
}
return 0;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m,q,cas=0;
while(cin>>n>>m>>q)
{
cas++;
printf("Case %d:\n",cas);
for(int i=0;i<n;i++)
scanf("%I64d",&a[i]);
for(int j=0;j<m;j++)
scanf("%I64d",&b[j]);
for(int k=0;k<q;k++)
scanf("%I64d",&c[k]);
num=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
ab[num++]=a[i]+b[j];
sort(ab,ab+num);
sort(c,c+q);
int d;
ll t;
num--;
scanf("%d",&d);
while(d--)
{
scanf("%I64d",&t);
if(ab[0]+c[0]>t||ab[num]+c[q-1]<t)
printf("NO\n");
else
{
int p;
for(p=0;p<q;p++)
if(Find(t-c[p]))
{printf("YES\n");break;}
if(p==q)
printf("NO\n");
}
}
}
return 0;
}
- hdu2141 Can you find it? (二分)
- Can you find it?(二分)
- Can you find it?(二分)
- Can you find it? (二分)
- can you find it (二分)
- Can you find it?---二分
- Can you find it?(二分)
- Can you find it? 【二分】
- Can you find it? 二分
- [ACM] hdu 2141 Can you find it? (二分查找)
- HDOJ 题目2141 Can you find it?(二分搜索)
- HDOJ 2141 Can you find it?(二分)
- HDU 2141 Can you find it?(二分查找)
- HDU - 2141 Can you find it?(二分查找)
- hdu 2141 Can you find it?(二分查找)
- hdu 2141 Can you find it?(暴力+二分)
- 题解: HDU 2141 Can you find it? (二分查找)
- hdu2141 Can you find it? (二分查找)
- 分解质因数
- HDU 5166 Missing number
- POJ 2528 Mayor\'s posters
- POJ 2828 Buy Tickets
- POJ 3468 A Simple Problem with Integers(区间更新)
- Can you find it?(二分)
- POJ 3264 Balanced Lineup(RMQ)
- POJ 3368 Frequent values (RMQ)
- HDU 1698 Just a Hook
- HDU 3974 Assign the task
- POJ 3321 Apple Tree
- POJ 2155 Matrix(二维线段树)
- 加载顺序,一个类的
- HDU 2492 Ping pong