解题思路

对小熊战斗力进行排序,糖果填充的饥饿值进行排序
遍历小熊,对其需要的饥饿值在谈糖果中进行二分查找,查找的终止条件为,找到小于等于当最接近小熊需要饥饿值得数字,然后小熊的需要饥饿值减去糖果可以提供的值,如果差值大于0,则继续二分查找,知道二分查找返回-1或者是小熊饥饿值为0。在这里不通过二分直接循环遍历糖果值也是可以AC的。


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;public class Main {static class Compare1 implements Comparator<Bear> {@Overridepublic int compare(Bear o1, Bear o2) {// TODO Auto-generated method stubreturn o1.fighting > o2.fighting ? -1 : (o1.fighting < o2.fighting ? 1 : 0);}}static class Compare2 implements Comparator<Bear> {@Overridepublic int compare(Bear o1, Bear o2) {// TODO Auto-generated method stubreturn o1.seq > o2.seq ? 1 : (o1.seq < o2.seq ? -1 : 0);}}static class Bear {int hunger;int fighting;int seq;}// 二分查找public static int find(List<Integer> array, int num) {int low = 0;int high = array.size() - 1;if (array.get(high) <= num)return high;while (low <= high) {int mid = (low + high) / 2;if (mid != array.size() - 1 && array.get(mid) <= num && array.get(mid + 1) > num) {return mid;}if (num > array.get(mid)) {low = mid + 1;} else if (num < array.get(mid)) {high = mid - 1;}}return -1;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();List<Integer> candies = new ArrayList<>();for (int i = 0; i < m; i++) {candies.add(sc.nextInt());}Bear[] bears = new Bear[n];for (int i = 0; i < n; i++) {Bear bear = new Bear();bear.fighting = sc.nextInt();bear.hunger = sc.nextInt();bear.seq = i;bears[i] = bear;}Collections.sort(candies);Arrays.sort(bears, new Compare1());for (int i = 0; i < n; i++) {int hunger = bears[i].hunger;int a = 0;while (hunger > 0 && (a = find(candies, hunger)) != -1) {hunger -= candies.get(a);candies.remove(a);}bears[i].hunger = hunger;}Arrays.sort(bears, new Compare2());for (int i = 0; i < n; i++) {System.out.println(bears[i].hunger);}}
}

【拼多多笔试题】小熊战斗力相关推荐

  1. 拼多多笔试题 回合制游戏

    拼多多笔试题 回合制游戏 题目描述 解法1(深度优先搜索) 解法2(数学规律) 昨晚心血来潮,拿了一份校招真题练练手,无奈这道题一直没有AC,只有75%的通过率,用了深度优先搜索+记忆化搜索最终还是会 ...

  2. 校招拼多多笔试题(前端工程师)

    考试时间:2017-09-02-提前批内推-笔试 1) 测试代码如下: var a = {}; b = { key: 'b' }; c = { key: 'c' }; a[b] = 123; a[c] ...

  3. 2019提前批——拼多多笔试题

    一(85) 给定两个数组A和B.其中数组A是几乎严格升序排列的,几乎的定义是只需改变其 中一个数,即可满足完全升序排列. 你的任务是从数组A中找到这个数字,并从数组B中选取1数将其替换,使得数 组A是 ...

  4. 拼多多笔试题(三):多多的电子字典

    问题描述: 多多鸡打算造一本自己的电子字典,里面的所有单词都只由a和b组成. 每个单词的组成里a的数量不能超过N个且b的数量不能超过M个. 多多鸡的幸运数字是K,它打算把所有满足条件的单词里的字典序第 ...

  5. 拼多多笔试题(一):多多的魔术盒子

    问题描述:  多多鸡有N个魔术盒子(编号1-N),其中编号为i的盒子里有i个球. 多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少 ...

  6. python 拼多多秒杀_关于 拼多多笔试题-简单易懂的秒杀服务

    实现一个简易的秒杀服务,有3个接口: 1. 添加一个秒杀活动 addActivity(int startTime, int endTime, int goodsId, int limitQuantit ...

  7. [Nowcoder] 大整数相乘(拼多多笔试题)

    有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 输入例 ...

  8. 拼多多笔试题 回合制角色扮演

    题目描述 你在玩一个回合制角色扮演的游戏.现在你在准备一个策略,以便在最短的回合内击败敌方角色.在战斗开始时,敌人拥有HP格血量.当血量小于等于0时,敌人死去.一个缺乏经验的玩家可能简单地尝试每个回合 ...

  9. 拼多多笔试题(六):选靓号

    问题描述: A 国的手机号码由且仅由 N 位十进制数字(0-9)组成.一个手机号码中有至少 K 位数字相同则被定义为靓号.A 国的手机号可以有前导零,比如 000123456 是一个合法的手机号. 小 ...

最新文章

  1. [导入]软件工程和乒乓球
  2. 扩展 日历_日历功能的拓展:Apple Watch能在屏幕上显示年日历
  3. Windows 系统如何查看本机的 IP 地址
  4. 冒泡和快速排序的时间复杂度_八大排序算法性能分析及总结
  5. ceph怎么搭建文件存储_SUSE专家谈Ceph落地之最佳实践
  6. 【ACL'21】弱标签的垃圾数据,也能变废为宝!
  7. layui监听多个radio事件
  8. JavaScript+HTML 实现贪吃蛇简陋版
  9. GPS原始坐标转百度地图坐标(纯C代码)
  10. 神是什么?神即道 道法自然 如来 ---《天道》王志文饰丁元英 左小青饰芮小丹
  11. 《微处理器体系结构》1.1 汇编语言与机器语言及应用
  12. axure8下拉表单_AXURE RP 8怎么设置下拉菜单? AXURE下拉菜单的制作方法
  13. es的bucket和metric
  14. 白嫖亚马逊AWS服务器
  15. 【菜鸟进阶之路】P6367 [COCI2006-2007#6] PRASE - 洛谷
  16. Oracle学习(八)——————————————子查询
  17. oeasy教您玩转linux010203显示logo
  18. acwing----春季每日一题2022篇(二)
  19. Cisco之show ip arp 与 show mac-address-table
  20. 单稳态触发器(cmos门电路构成)-微分型

热门文章

  1. EMC常见术语-dB、dBm、dBw以及如何计算
  2. 每日一道Leetcode - 剑指 Offer 14- I. 剪绳子【动态规划】
  3. 新手上路有哪些开车技巧 , 很实用!
  4. java多线程:9、synchronized、Lock的底层实现原理以及和volatile、Lock、ReentrantLock的区别?
  5. Linux ALSA音频系统:soundcard
  6. XCTF Leaking
  7. 彻底解决EMI问题,只需8秒
  8. 管道过滤器和批处理方式
  9. vmware虚拟机15 安装centos764 并且配置网络
  10. 华为 社招 C语言笔试,华为笔试C语言笔试题之3