`

杭电---2141

c 
阅读更多

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
运用二分的思想;
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 510
int a[maxn],b[maxn],c[maxn];
int sum[maxn*maxn];
int bin_search(int y,int cnt)
{
    int left=0,right=cnt-1;
    int mid;
    while(left<=right)
    {
        mid=(left+right)/2;
        if(sum[mid]==y) return 1;
        if(sum[mid]<y) left= mid+1;
        if(sum[mid]>y) right=mid-1;
    }
    return 0;
}
int main ()
{
    int l,m,n;
    int k=1;
    while(~scanf("%d%d%d",&l,&m,&n))
    {
        for(int i=0; i<l; i++)
            scanf("%d",&a[i]);
        for(int i=0; i<m; i++)
            scanf("%d",&b[i]);
        for(int i=0; i<n; i++)
            scanf("%d",&c[i]);
        int cnt=0;
        for(int i=0; i<l; i++ )
            for(int j=0; j<m; j++)
            {
                sum[cnt++]=a[i]+b[j];

            }
        sort(sum,sum+cnt);\\sort是一个排序函数,可以自己百度了解一下
        int s;
        scanf("%d",&s);
        printf("Case %d:\n",k++);
        while(s--)
        {
            int x;
            scanf("%d",&x);
            int flag=0;
            for(int i=0; i<n; i++)
            {
                if(bin_search(x-c[i],cnt))
                {
                    flag=1;
                    break;
                }
            }
            if(flag==1)printf("YES\n");
            else printf("NO\n");
        }
    }
    return 0;
}
\\Ai+Bj+Ck = X可以写成Ai+Bj=X-Ck;


分享到:
评论

相关推荐

    杭电-信号与系统、通信原理-2012真题

    杭电-信号与系统、通信原理-2012真题

    杭电-[数据库08概论、12原理].doc

    杭电-[数据库08概论、12原理]

    杭电-通信短学期-系统设计-大报告

    《杭电-通信短学期-系统设计-大报告》涵盖了数字通信领域的多个关键知识点,结合了CAD(计算机辅助设计)技术、项目实践以及课程学习的综合应用。在这个压缩包中,我们可以找到“短学期报告模板.doc”、“实验报告...

    杭电-研究生-应用数学(平时课堂答案+期末宝典)

    《杭电-研究生-应用数学》课程涵盖了多个关键知识点,主要集中在随机游走模型、马尔科夫链、泊松过程、排队论以及无约束最优化的黄金分割点法等领域。下面将对这些主题进行详细阐述。 首先,随机游走模型是概率论中...

    张红娟数据库原理实验-杭电-杭州电子科技大学

    本实验资料“张红娟数据库原理实验-杭电-杭州电子科技大学”旨在帮助学生深入理解和实践数据库系统的各种概念。 实验环境主要采用的是Microsoft SQL Server 2000,这是一款由微软公司推出的强大关系型数据库管理...

    杭电-计算机组成原理-期末试卷样卷

    这份"杭电-计算机组成原理-期末试卷样卷"包含了A、B两套试卷,为学生提供了宝贵的复习资料和模拟测试机会。 试卷一(A卷)可能涵盖以下知识点: 1. 计算机系统概述:了解计算机的基本组成,包括中央处理器(CPU)...

    杭电-通信工程-实验报告大全

    《杭电-通信工程-实验报告大全》是一个涵盖了通信工程多个关键领域的资源集合,包括了移动通信、通电、计算机网络、数据结构、信号与系统、数字电路、电磁场以及数字信号处理等实验报告。这些实验报告对于学习通信...

    杭电-移动通信.doc

    1、多普勒效应: 2、移动通信的工作方式:1单工制 2双工制 3半双工制 3、多址方式:频分多址(FDMA)时分多址(TDMA)码分多址(CDMA)空分多址(SDMA) 3.蜂窝移动系统基本结构:AUC:鉴权中心,认证移动用户身份以及...

    杭电-[数据结构(c语言版)]复习题纲杭州电子科技大学.pdf

    根据给定的文件信息,我们可以总结出以下关于“数据结构(C语言版)”的关键知识点,这些知识点主要涉及数据结构的基础理论以及几种重要的数据结构,包括线性表、栈、队列、串、数组和广义表、树和二叉树等内容。...

    杭电-[数据结构(c语言版)].doc

    数据结构是计算机科学中的核心课程,它主要研究数据在计算机中的组织方式以及高效地操作这些数据的方法。在C语言版的数据结构中,我们通常会学习如何利用C语言实现各种数据结构,如线性表、栈、队列、串、数组和广义...

    杭电-数据结构课程设计报告模板内附C代码.doc

    数据结构课程设计报告 在计算机科学中,数据结构是存储和组织数据的一种方式,它对高效算法的设计至关重要。本报告将详细阐述三个基于C语言的数据结构应用实例:猴子吃桃子问题、进制数转化问题以及长整数运算。...

    杭电2000-2099解题报告

    《杭电2000-2099解题报告》是针对C及C++初学者的一款宝贵学习资源,旨在帮助他们快速提升编程技能。这个压缩包包含了一份名为"HDU 2000-2099 解题报告.CHM"的文件,这是一部详细解答了杭州电子科技大学(Hangzhou ...

    hdoj杭电1000-2000部分解题报告

    “hdoj杭电1000-2000部分解题报告”这个标题指的是一个关于杭州电子科技大学(简称杭电)在线编程竞赛平台(HDU Online Judge,简称HDOJ)上的题目解题报告。这份报告涵盖了编号从1000到2000的题目,这是一段相当大...

    杭电日历-xxyw

    【杭电日历-xxyw】是一个针对杭州电子科技大学(简称杭电)的特定日历应用,由开发者xxyw创建。这个应用可能包含了杭电校内的活动、课程安排、考试时间等重要信息,旨在帮助学生和教师更好地规划和管理他们在学校的...

    杭电ACM -ppt

    【杭电ACM -PPT】相关知识点 “杭电ACM”指的是杭州电子科技大学(Hangzhou Dianzi University)的ACM国际大学生程序设计竞赛(ACM/ICPC)团队,这是一支活跃在国际编程竞赛领域的队伍。ACM/ICPC是一项面向全球大学...

    杭电oj-2000到2099解题报告

    【杭电oj-2000到2099解题报告】 这是一份详尽的解题报告,涵盖了杭州电子科技大学(Hangzhou Dianzi University,简称杭电)在线评测系统(Online Judge,简称oj)中的2000至2099题目的解决方案。这些题目覆盖了...

    leetcode和杭电-Algorithm_exercises:算法练习

    leetcode和杭电 Algorithm_exercises Algorithm exercises 相关算法及相应的练习题 持续更新中... 方便自己和他人浏览,作了一些整理,一些题中注释会有相应的说明 项目目录 HDU_OJ -- 杭电OJ上的部分题 Java刷题...

    leetcode和杭电-Job-hunting-for-2020:2020秋招笔记

    leetcode和杭电 2020 毕业秋招 Java & CS Github: JavaGuide ZXBlog ... 极客: 数据结构与算法之美 趣谈网络协议 算法面试通关40讲 ... 书籍: JAVA(Java核心技术卷、深入理解Java虚拟机、Java多线程编程实战指南...

    杭电ACM-HDUOJ 1001 SUM problem

    ### 杭电ACM-HDUOJ 1001 SUM problem #### 题目背景与概述 杭电ACM-HDUOJ 1001 SUM problem 是一道非常基础且适合编程初学者练习的题目。根据描述,这道题目是“A+B PROBLEM”的一种变形,主要考察的是循环结构和...

    leetcode和杭电-StudyNotes:学习笔记

    在IT领域,LeetCode与杭州电子科技大学(杭电)的在线编程题目库是程序员们提升算法能力和编程技巧的重要资源。本学习笔记主要聚焦于解决这两个平台上的问题,特别是关于链表的数据结构及其相关的算法问题。链表作为...

Global site tag (gtag.js) - Google Analytics