当前位置: 首页 > news >正文

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:\n",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;
}


转载于:https://www.cnblogs.com/wzzkaifa/p/6849787.html

相关文章:

  • 201521123083《Java程序设计》第12周学习总结
  • 【DP】:CF #319 (Div. 2) B. Modulo Sum
  • Druid连接池及监控在spring中的配置
  • 文本强制一行显示,多余的显示省略号
  • 设计模式之适配器模式(Adapter)
  • Linux tomcat
  • 我所认识的javascript正则表达式
  • eclipes 下 mavenweb项目 启动 jar包冲突问题
  • Open-DrainPush-Pull
  • js中文乱码问题,编码设为utf-8,但还是乱码问题。
  • PopupMenu 使用及自定义样式
  • 交换机基础
  • Java基础教程:网络编程
  • 构建之法阅读心得(六)
  • 第十三周学习进度条
  • Google 是如何开发 Web 框架的
  • chrome扩展demo1-小时钟
  • Git初体验
  • JAVA并发编程--1.基础概念
  • JAVA多线程机制解析-volatilesynchronized
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Linux中的硬链接与软链接
  • MySQL QA
  • Python十分钟制作属于你自己的个性logo
  • select2 取值 遍历 设置默认值
  • 搭建gitbook 和 访问权限认证
  • 关于Java中分层中遇到的一些问题
  • 聊聊sentinel的DegradeSlot
  • 前言-如何学习区块链
  • 深入浅出webpack学习(1)--核心概念
  • 数据科学 第 3 章 11 字符串处理
  • 学习JavaScript数据结构与算法 — 树
  • 学习使用ExpressJS 4.0中的新Router
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ionic入门之数据绑定显示-1
  • 昨天1024程序员节,我故意写了个死循环~
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)Linux Shell编程——输入输出重定向
  • (学习日记)2024.01.09
  • (转)EXC_BREAKPOINT僵尸错误
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET6实现破解Modbus poll点表配置文件
  • .net操作Excel出错解决
  • .NET分布式缓存Memcached从入门到实战
  • .NET连接MongoDB数据库实例教程
  • .NET运行机制
  • .php文件都打不开,打不开php文件怎么办
  • @property括号内属性讲解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [APIO2015]巴厘岛的雕塑
  • [BJDCTF 2020]easy_md5