小熊吃糖
小熊吃糖
1.小熊有战斗力和饥饿值;
2.战斗值高的小熊优先吃糖,消除饥饿;
3.若小熊未吃饱,将继续吃糖来消除饥饿,但是小熊不会吃撑;
输入:
第一行两个整数,一个是小熊个数n,糖果个数m;
第二行,每个糖果的大小,表示可以消除多少的饥饿;
剩下n行,两个整数,一个数是小熊的战斗力,一个值是小熊的饥饿值;
返回:
返回每个小熊剩余的饥饿值。
实例:
2 5
5 6 10 20 30
4 34
3 35
返回:
4
0
注意:下述代码只是通过上述测试用例,并没有具体在测试。
分析:
- 小熊吃糖,根据战斗力具有优先权,所以需要对小熊按照战斗力排序;
- 小熊吃了一个糖过后,该糖果就不存在了,所以suger[i]=0;
- 小熊吃糖的终止条件是:小熊剩下的饥饿值小于所有糖果的最小值;或者剩余饥饿值==0;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class test1 {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();//bearint m = in.nextInt();//sugerint[] suger = new int[m];int[] bear = new int[n];for(int i=0;iin.nextInt();}Map map = new HashMap();for(int i=0;iint zdl = in.nextInt();int je = in.nextInt();bear[i] = zdl;map.put(zdl,je);}List> list = new LinkedList>(map.entrySet());Collections.sort(list, new Comparator>() {public int compare(Map.Entry arg0,Map.Entry arg1){return (arg1.getKey()-arg0.getKey()==0) ? (arg0.getKey()-arg1.getKey()):(arg1.getKey()-arg0.getKey());}});for(int i = 0;iint jez = list.get(i).getValue();Arrays.sort(suger);for(int j=m-1;j>=0;j--){if(jez>=suger[j]){jez -=suger[j];suger[j] = 0;}else{continue;}}map.put(list.get(i).getKey(), jez);}for(int i=0;iout.println(map.get(bear[i]));}}}
运行结果:
输入:
2 5
5 6 10 20 30
4 34
3 35
输出:
4
0
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
