zoukankan      html  css  js  c++  java
  • 9504 面试

    9504 面试

    时间限制:2000MS  内存限制:65535K
    提交次数:0 通过次数:0

    题型: 编程题   语言: G++;GCC

     

    Description

        近来acm各大神牛教主均已经拿到超级offer(腾讯、网易、迅雷、阿里巴巴,百度……),无限膜拜。
    小菜Arokenda因平时不学无术,已经成为华农新一届面霸,记录正在不断刷新。经过2^n次面试,哥总结出,有80%的公司都会问你期望薪水为多少。
    当然,他们公司原定计划都有N多不同金额的薪水,会根据你期望的薪水找到一份与你最匹配的薪水(即最接近你期望的薪水),
    当然,能否拿到必需至少具备有此二条件其中之一:
    1、你是华农acmer且成为教主级人物。
    2、你的忽悠能力灰常强。#^_^#




    输入格式

        第一行为T(T<20),表示有T个公司。
        接下来每个公司第一行为整数n(n<5000),表示该公司提供了n份金额不同的薪水。
        第二行为n个整数,表示这n份不同的薪水。
        第三行为整数m(m<5000),表示有m个人去面试。
        第四行为m个整数,表示这m个人的期望薪水。
    



    输出格式

        对每个人输出一行,表示公司提供的最接近该面试者期望薪水的薪水。
        每个公司之间用空行隔开。
    



     

    输入样例

    2
    5
    1 2 3 4 5
    3
    2 4 6
    5
    1 2 3 4 5
    3
    2 4 6
    



     

    输出样例

    2
    4
    5
    
    2
    4
    5
    



     

    提示

        面对同样接近的两份薪水,该公司会提供低薪水的职位给你,以节省经费。
        公司提供的薪水和面试者的期望薪水都是无序的。
    大水题,简单二分,无需做任何优化,在处理左右边界情况时注意分类别出错就行 了。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 void bin_search(int a[],int n,int left,int right)
     8 {
     9     int mid=(left+right)/2;
    10     if(a[mid]==n)
    11         printf("%d
    ",a[mid]);
    12     else if(mid==left)
    13     {
    14         if(a[right]==n)
    15             printf("%d
    ",a[right]);
    16         else if(a[left]==n)
    17             printf("%d
    ",a[left]);
    18         else if(a[right]>n)
    19         {
    20             int tl=n-a[mid],tr=a[right]-n;
    21             if(tl==tr)
    22                 printf("%d
    ",a[mid]);
    23             else if(tl>tr)
    24                 printf("%d
    ",a[right]);
    25             else printf("%d
    ",a[mid]);
    26         }
    27         else if(a[right]<n)
    28             printf("%d
    ",a[right]);
    29         else if(a[left]>n)
    30             printf("%d
    ",a[left]);
    31     }
    32 
    33     else if(a[mid]<n)
    34         bin_search(a,n,mid,right);
    35     else if(a[mid]>n)
    36         bin_search(a,n,left,mid);
    37 }
    38 
    39 int main()
    40 {
    41     int T,n,m,i;
    42     scanf("%d",&T);
    43     while(T--)
    44     {
    45         int pay[5000]={0},want[5000]={0};
    46         scanf("%d",&n);
    47         for(i=0;i<n;i++)
    48             scanf("%d",&pay[i]);
    49         scanf("%d",&m);
    50         for(i=0;i<m;i++)
    51             scanf("%d",&want[i]);
    52         sort(pay,pay+n);
    53         //
    54         for(i=0;i<m;i++)
    55             bin_search(pay,want[i],0,n-1);
    56         putchar('
    ');
    57     }
    58     return 0;
    59 }
    
    
    
     
  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/geek1116/p/5240304.html
Copyright © 2011-2022 走看看