第一题

杰夫非常喜欢种草,他自己有一片草地,为了方便起见,我们把这片草地看成一行从左到右,并且第 i 个位置的草的高度是hi。
杰夫在商店中购买了m瓶魔法药剂,每瓶魔法药剂可以让一株草长高x,杰夫希望每次都能有针对性的使用药剂,也就是让当前长得最矮的小草尽量高,现在杰夫想请你告诉他在使用了m瓶魔法药剂之后,最矮的小草在这种情况下最高能到多少。

输入描述
第一行三个整数n, m, x分别表示小草的个数,魔法药剂的个数以及每瓶魔法药剂让小草长高的高度。(1≤n,m,x≤1e5)
第二行n个整数分别表示第i株小草的高度ai。(1≤ai≤1e9)

输出描述
使用了m瓶药剂之后最矮的小草的最高高度。

样例
输入
3 2 3
3 3 7
输出
6

代码

package 广联达;import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;public class Question1 {public static void main(String[] args) {Queue<Integer> q = new PriorityQueue<>();Scanner sc = new Scanner( System.in );int n,m,x;n = sc.nextInt();//n 小草的个数m = sc.nextInt();//m 瓶药剂x = sc.nextInt();//x 长高的高度int temp;for( int i = 0 ; i < n ; i ++ ){temp = sc.nextInt();q.add( temp );}for( int i = 0 ; i < m ; i ++ ){temp = q.poll() + x;q.add( temp );}System.out.println( q.poll() );}
}

第二题

我们希望一个序列中的元素是各不相同的,但是理想和现实往往是有差距的。现在给出一个序列A,其中难免有些相同的元素,
现在提供了一种变化方式,使得经过若干次操作后一定可以得到一个元素各不相同的序列。

这个操作是这样的,令x为序列中最小的有重复的数字,你需要删除序列左数第一个x,并把第二个x替换为2*x。

请你输出最终的序列。

例如原序列是[2,2,1,1,1],一次变换后变为[2,2,2,1],两次变换后变为[4,2,1],变换结束

输入描述
输入第一行包含一个正整数n,表示序列的长度为n。(1<=n<=50000)

第二行有n个整数,初始序列中的元素。(1<=a_i<=10^8)

输出描述
输出包含若干个整数,即最终变换之后的结果。

样例
输入
5
2 2 1 1 1
输出
4 2 1

代码:不知道代码的是否能AC,没得测了...仅记录,提供思路。现在知道了,我自己写的代码没有考虑,原数组的顺序,这个也简单,用map记录一下就行了。

package 广联达;import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.Vector;public class Question2 {//优先级队列public static Queue<Integer> q = new PriorityQueue<>();//优先级队列public static Vector<Integer> v = new Vector<>();使用自定义的队列,使其降序排列//public int compare(Integer e1, Integer e2) {//    return e2 - e1;//}//判断队列中的前两个数字是否相等public static boolean judge(){//如果此时数量不足,那么将优先级队列中的数直接给vectorif( q.size() < 2 ){return false;}else{//如果此时优先级队列中的值大于1int first = q.poll();int second = q.peek();//这里少抛出一次q.add( first );//如果相等才进行自我合并if( first == second ){return true;}return false;}}public static void main(String[] args) {/*** 解题的想法,找一个可变的容器,并且其内部会自动排序* 那么想到了优先级队列,因为时间复杂度允许,1s,优先级队列的时间复杂度是nlogn(不超过80000就行)*/Scanner sc = new Scanner( System.in );//n个数int n = sc.nextInt();int temp;for( int i = 0 ; i < n ; i ++ ){temp = sc.nextInt();q.add( temp );}//用来进行合并的两个数int first,second;while ( !q.isEmpty() ){//进行判断,看是否是进行合并还是进行 “ 转移 ”//如果返回true,说明能进行合并if( judge() ){first = q.poll();second = q.poll();q.add( first * 2 );}else{v.add( q.poll() );}}//输出vectorSystem.out.print( v.get(0) );for( int i = 1 ; i < v.size() ; i ++ ){System.out.print( " " + v.get( i ) );}}
}//第二种解法
//来自 https://www.nowcoder.com/discuss/462425?type=all&order=time&pos=&page=1&channel=666&source_id=search_all
public class Question222 {public static void setAdd(Set<Integer> set, Integer i) {//如果已经有这个数了,那么将其移除,再乘以2if (!set.add(i)) {set.remove(i);setAdd(set, i << 1);}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();Integer[] array = new Integer[n];for (int i = 0; i < array.length; i++) {array[i] = scanner.nextInt();}//前面都是进行正常的输入LinkedHashSet<Integer> res = new LinkedHashSet<>();for (int i = 0; i < array.length; i++) {//挨个放入,如果已经有这个数字了,那么进行移除,并且乘以2setAdd(res, array[i]);}//后面进行正常的输出Iterator<Integer> iterator = res.iterator();while (iterator.hasNext()) {System.out.print(iterator.next());if (iterator.hasNext()) System.out.print(" ");}}}

第三题

同同在玩积木,每个积木上都有一个独一无二的二进制数字。同同的积木有特殊的规则,只有满足规则的积木才能被垒到一起。

对于一个积木,如果积木上写的数字是a,则对于所有的写着数字b的积木,只要满足a∩b=b,其中∩代表二进制与运算,则积木b可以放到积木a的上面。每一堆积木最多仅有一个积木可以充当底座,被放在底座上的所有积木都必须满足上述关系。(只要底座和积木满足关系即可以放在一堆,不需要考虑如何码放)

同同有一只笔,只能使用一次,效果是把某一个积木上数字的某一位从0改成1或者从1改成0。请问同同最少能让积木分在几堆里。

二进制与运算的定义:对于两个数a,b,写出它们的二进制形式a0a1am...和b0b1bm,设c 为与运算的结果,则有当a0和b0同时为1 时c0为1,其他位同理。

输入描述
第一行两个数n,m(1≤m≤20,1≤n≤min(10^5,2m)),分别代表积木的数量和积木上数字对应二进制位最多有几位

第二行n个整数a1,a2,...,an(0≤ai≤2m),代表每个积木上写的二进制数字的十进制表示形式。

输入保证每个积木上的数字不重复。

输出描述
一行一个整数代表最少的堆数。

样例

输入

5 4

10 2 4 8 9

输出

2

提示

样例数据

五个数的二进制形式分别是

1010

0010

0100

1000

1001

首先可以吧数字为8,9的两个积木放到同一堆,数字为10,20的积木放在同一堆,然后把4的最高位从1改成0,这样就变成了0,可以与第一个积木放到同一堆。一共两堆。

广联达笔试 2020 7 29相关推荐

  1. 【不忘初心】Win10_20H2_2009_19042.572_X64_六合一_[纯净精简版](2020.10.29)

    母版来自MSDN  WIN10_20H2.19042.508,集成补到19041.572,20H2相比1909 2004版本要稳定很多,精简起来也比较顺手,相对来说体积比之前的要小一些,精简方法基本上 ...

  2. 2020.10.29腾讯QQ音乐社招前端电话一面总结

    2020.10.29腾讯QQ音乐社招前端电话一面总结 面试官晚上19:16打过来的,聊了44分钟,到八点准时结束.无论过没过,都记录一下面试过程吧,是问了几个大问题,在几个大问题的基础上根据你的回答, ...

  3. 时间格式转换 Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间)

    留个记录,回头直接拿着用 // Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间) 转 年月日时分秒 function timeD(time) {     let d ...

  4. 第三轮测试卷一(2020.10.29)

    第三轮测试卷一(2020.10.29) 铺石板,输入n x m的广场,和a x a的石板,求最少需要多少石板? /* 算法思想:没啥.... 理解向上取整就行 */num=((n+a-1)/a)*(( ...

  5. 前仿真和后仿真的区别,按键消抖设计思想、PLL使用、ODDR2的原语使用 --2020/10/29工作总结

    2020/10/29工作总结 前仿真和后仿真的区别 前仿真 综合后仿真 后仿真 synthesize和implement.generate bitstream 参考链接 按键消抖设计思想 PLL使用 ...

  6. 2020.8.26广联达笔试第二题——魔法师四种元素平衡(Python)

    Python编程实现,魔法师的四种元素平衡. 题目简述:魔法师有四种属性,当四种属性的值相同时最好.在修炼时,魔法师可以通过将任意两种属性转化为任意一种其他属性,来进行平衡性调整.试问魔法师当前的四种 ...

  7. 2020.4.29华为笔试【华为校园招聘 软件】

    1.给定一个字符串(最多包含8个字符),可能包含重复的字母,返回有多少种不同的排列组合. 输入样例:abc 输出:6 tips:如果字符串为空,输出0. 思路:类似于leetcode47题,枚举每一个 ...

  8. 记阿里笔试2020.3.23惨痛经历

    一共两个题.笔试时先通读了两个题的题目.因为第二题有思路觉得简单就先写的第二题.结果20分钟写完代码,挑了30分钟bug,都没搞出来,最后坑在±号上. 根据记忆上题目:给你一个迷宫,包括一个起点'S' ...

  9. 烟草局计算机笔试,2020年广西南宁烟草局什么时候笔试?

    最近广西烟草局各地市社招通知频发,南宁烟草局报名截止至今都无任何消息,根据往年的考情,通知近期很大可能会发布,将于6月底完成笔面!你备考好了吗? 今天广西中公国企小编来给大家说一下南宁烟草局社招的笔试 ...

最新文章

  1. interrupt InterruptException
  2. 3d max 安装和导入rvt模型失败
  3. Oracle 12c 安装(内附软件包)
  4. Oracle connet by prior 关键字的简单介绍和用法
  5. 怎么让某段css代码只在Chrome 火狐 edge 浏览器生效
  6. 利用计算机解决的生活问题,利用计算机解决经典动力学问题
  7. MySQL 如何优化大分页查询?
  8. 计算机毕业论文答辩申请书,论文答辩申请书范文6篇
  9. 【论文阅读】Rethinking the Value of Network Pruning
  10. android10禁用华为桌面,华为禁用第三方桌面 简介办法
  11. 电脑XP系统最大支持多大内存?
  12. informix常用时间运算和操作方法
  13. iWatch 页面导航
  14. 号外号外 !新媒之家APP2.1.0版本震撼上线!!!
  15. 联想服务器id显示感叹号,网卡驱动安装后显示感叹号
  16. C++实现直接插入排序法
  17. onsubmit函数触发事件
  18. 考研 研究生 什么是考研 考研的第一课 全面了解考研 研究生
  19. win2008 磁盘碎片整理
  20. “你 100% 的时间都是 IBM 员工”,程序员的业余个人项目也属于公司?

热门文章

  1. ATMS启动Activity流程 - 安卓R
  2. 使用浏览器开发工具测试网站可访问性的七种方法
  3. VGGNet论文翻译——中英文对照+标注总结
  4. Maven简明教程(5)---依赖关系(实例篇)
  5. 自定义控件知识储备-LayoutParams的那些事
  6. 2021年中国绿色贷款情况分析:绿色贷款余额达15.9万亿元,其中基础设施绿色升级产业贷款余额占46.54%[图]
  7. linux网页用php文件怎么打开文件夹,如何使用浏览器访问linux本地文件
  8. 4 卷积核提取图片特征
  9. 微信小程序分享网络路径图片
  10. 软磁材料交流测量装置TD81系列软磁交流测试装置系统