拼多多第一题"小熊吃糖"AC代码(Java版)

import java.util.*;
public class test2{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int[] tang=new int[m];
        for(int i=0;i<m;i++){
        	tang[i]=in.nextInt();
        }
        Arrays.sort(tang);
        int[][] xiong=new int[n][2];
        for(int i=0;i<n;i++){
        	xiong[i][0]=in.nextInt();
        	xiong[i][1]=in.nextInt();
        }     
        TreeMap<Integer, Integer> sord=new TreeMap<>();
        for(int i=0;i<n;i++){
        	sord.put(xiong[i][0], xiong[i][1]);
        }
  
        Set<Integer> set =  sord.keySet();  
        
        Iterator<Integer> it = set.iterator();  
          
        TreeSet<Integer>  ts = new TreeSet<Integer>();  
        while(it.hasNext())  
        {  
            ts.add(it.next());  
        }  
          
        Iterator<Integer> it2 = ts.descendingIterator();  
          
        while(it2.hasNext())  
        {  
        	int l=it2.next();
        	
            int k=sord.get(it2.next());
            for(int i=m-1;i>=0;i--){
            	if(tang[i]<=k&&tang[i]!=-1){
            		k-=tang[i];
            		tang[i]=-1;
            	}
            }
            sord.put(l, k);
        }  
        for(int i=0;i<n;i++){
        	System.out.println(sord.get(xiong[i][0]));
        }
        
  }
 }

#Java工程师#
全部评论
import java.util.Arrays; import java.util.Scanner; public class PinDuoDuo1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[] tang=new int[m]; for(int i=0;i<m;i++) tang[i]=sc.nextInt(); int[][] xiong=new int[n][2]; for(int i=0;i<n;i++){ xiong[i][0]=sc.nextInt(); xiong[i][1]=sc.nextInt(); } Arrays.sort(tang); //根据力量选择熊 int index,maxValue; int num=n; while(num-->0){ index=0; maxValue=0; for(int i=0;i<n;i++){ if(xiong[i][0]>maxValue) { maxValue=xiong[i][0]; index=i; } } xiong[index][0]=0; for(int j=m-1;j>=0;j--){ if(xiong[index][1]>=tang[j]){ xiong[index][1]-=tang[j]; tang[j]=0; if(xiong[index][1]==0) break; } } } for(int i=0;i<n;i++) System.out.println(xiong[i][1]); } }
点赞 回复
分享
发布于 2017-09-02 17:20
import java.util.*; public class Pinduoduo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); int m = scanner.nextInt(); int[] candy=new int[101]; for (int i = 0; i < m; i++) { Integer temp = scanner.nextInt(); candy[temp]++; } List<Bear> bearList = new ArrayList<>(); int result[]=new int[n]; for (int i = 0; i < n; i++) { Bear bear = new Bear(); bear.level = scanner.nextInt(); bear.hunger = scanner.nextInt(); bear.index=i; bearList.add(bear); } Collections.sort(bearList, new Comparator<Bear>() { @Override public int compare(Bear o1, Bear o2) { return o2.level - o1.level; } }); for (Bear bear : bearList ) { for (int i = candy.length; i >=0; i--) { if (candy[i]>0&&bear.hunger>=i){ candy[i]--; bear.hunger-=i; } } result[bear.index]=bear.hunger; } for (int i = 0; i < n; i++) { System.out.println(result[i]); } } } } class Bear { int level; int hunger; int index; }
点赞 回复
分享
发布于 2017-09-02 17:42
小红书
校招火热招聘中
官网直投
import java.util.Arrays; import java.util.Comparator; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); //会从大到小排序 TreeMap<Integer,Integer> fight2hungry = new TreeMap<Integer,Integer>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { int result = o2-o1; return result<=0 ? -1:result; } }); int[] energy = new int[m]; int[] hungrys = new int[n]; int index = 0; while(index<m){ energy[index++]=sc.nextInt(); } index = 0; Arrays.sort(energy); while(index<n){ int fight = sc.nextInt(); int hungry = sc.nextInt(); hungrys[index] = hungry; fight2hungry.put(fight, index); index++; } getResult(energy,fight2hungry,hungrys); sc.close(); } private static void getResult(int[] energy, TreeMap<Integer, Integer> fight2hungry, int[] hungrys) { for(Entry<Integer,Integer> entry:fight2hungry.entrySet()){ int hungryIndex = entry.getValue(); int hungryValue = hungrys[hungryIndex]; int i=energy.length-1; while(i>=0){ if(hungryValue>=energy[i] && energy[i]!=0){ hungryValue -= energy[i]; energy[i]=0; hungrys[hungryIndex] = hungryValue; } i--; } } for (int j = 0; j < hungrys.length; j++) { System.out.println(hungrys[j]); } } }
点赞 回复
分享
发布于 2017-09-02 18:44
#!/usr/bin/env python #-*- coding:utf8 -*- def findNum(nums, array, n, m): nums = sorted(nums)[::-1] for i in range(n): j = 0 while j < m: if array[i][1] >= nums[j]: array[i][1] -= nums[j] nums[j] = 0 j += 1 array = sorted(array, key = lambda num: num[2]) for i in range(n): print array[i][1] if __name__ == '__main__': n, m = map(int, raw_input().split()) nums = map(int, raw_input().split()) array = [0 for i in range(n)] for i in range(n): array[i]= map(int, raw_input().split()) array[i].append(i) array = sorted(array, key = lambda num: num[0])[::-1] findNum(nums, array, n, m)
点赞 回复
分享
发布于 2017-09-03 20:01
234题有做出来吗?
点赞 回复
分享
发布于 2017-09-02 17:14
有更好更简单的大佬请不要吝啬贴出来自己的代码吧
点赞 回复
分享
发布于 2017-09-02 17:15
请问通过了多少啊?
点赞 回复
分享
发布于 2017-09-02 17:18
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();// 小熊数量 int m = sc.nextInt();// 糖数量 ArrayList<Integer> al = new ArrayList<Integer>();// 存储糖的能量 LinkedHashMap<Integer, Integer> lm = new LinkedHashMap<Integer, Integer>(); int b_fight[] = new int[n];// 战斗力 for (int i = 0; i < m; i++) { al.add(sc.nextInt()); } for (int i = 0; i < n; i++) { b_fight[i] = sc.nextInt(); lm.put(b_fight[i], sc.nextInt()); } Arrays.sort(b_fight); Collections.sort(al); for (int i = n - 1; i >= 0; i--) { for (int j = al.size() - 1; j >= 0; j--) { if (lm.get(b_fight[i]) - al.get(j) >= 0) { lm.put(b_fight[i], lm.get(b_fight[i]) - al.get(j)); al.remove(j); } } } Set<Map.Entry<Integer, Integer>> entrySet = lm.entrySet(); Iterator<Map.Entry<Integer, Integer>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<Integer, Integer> me = it.next(); Integer value = me.getValue(); System.out.println(value); } sc.close(); } }
点赞 回复
分享
发布于 2017-09-02 17:57
/** cin:   2 5   5 10 15 20 30   4 30   3 34 cout:   0   4 **/ #include<iostream> #include<vector> #include<algorithm> using namespace std; typedef struct{     int fighting;     int hunger;     int index;     int blance; }pandas; bool cmp(pandas a, pandas b){     if (a.fighting > b.fighting){         return true;     }     return false; } bool cmpindex(pandas a, pandas b){     if (a.index < b.index){         return true;     }     return false; } int main(){     int n, m;     cin >> n >> m;     vector<int> sugar(m);     for (int i = 0; i<m; i++){         cin >> sugar[i];     }     sort(sugar.begin(), sugar.end());     vector<bool> sugarflag(m,true);          vector<pandas> pand(n);     for (int i = 0; i<n; i++){         cin >> pand[i].fighting >> pand[i].hunger;         pand[i].index = i;         pand[i].blance = 0;     }     sort(pand.begin(), pand.end(), cmp);     int sum;     for (int i = 0; i <n; i++){           sum = 0;           int j = m-1;           while (j >= 0){               if (sugarflag[j]){                   if ((sum + sugar[j]) == pand[i].hunger){                       sum += sugar[j];                       sugarflag[j] = false;                       break;                   }                   if (sugar[j]>pand[i].hunger){                       j--;                       continue;                   }                   if ((sum + sugar[j])>pand[i].hunger){                       j--;                       continue;                   }                   sum += sugar[j];                   sugarflag[j] = false;                   j--;               }               j--;           }           pand[i].blance = pand[i].hunger - sum;     }     sort(pand.begin(), pand.end(), cmpindex);     for (int i = 0; i < n; i++){         cout << pand[i].blance << endl;     }     return 0; }
点赞 回复
分享
发布于 2017-09-02 18:04
package com.kaishengit; //小熊 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int bearNum = sc.nextInt(); int candyNum = sc.nextInt(); Bear [] bears = new Bear[bearNum]; int [] candys = new int[candyNum]; for(int i = 0;i < candyNum;i++) { int num = sc.nextInt(); candys[i] = num; } //返回结果 int [] res = new int[bearNum]; List<Bear> bearArrayList = new ArrayList<>(); for(int i = 0;i < bearNum;i++) { int num = sc.nextInt(); int num1 = sc.nextInt(); Bear bear = new Bear(num,num1,i); bears[i] = bear; bearArrayList = Arrays.asList(bears); } //战斗力排序 Collections.sort(bearArrayList); for(Bear bear : bearArrayList) { for(int i = candys.length - 1;i >= 0;i--) { if(candys[i] > 0 && bear.getHungry() >= candys[i]) { bear.setHungry(bear.getHungry() - candys[i]); candys[i] = 0; } } res[bear.index] = bear.getHungry(); } for (int i = 0; i < bearNum; i++) { System.out.println(res[i]); } } public static class Bear implements Comparable<Bear>{ Integer power; Integer hungry; Integer index; public Integer getPower() { return power; } public void setPower(Integer power) { this.power = power; } public Integer getHungry() { return hungry; } public void setHungry(Integer hungry) { this.hungry = hungry; } public Bear(int power, int hungry,int index) { this.power = power; this.hungry = hungry; this.index = index; } @Override public int compareTo(Bear bear) { int i=bear.power-this.power; if(i>0) return 1; else{ return i==0?0:-1; } } } public static int getMax(int[] arr){ int max=arr[0]; int i=1; for(;i<arr.length;i++){ if(arr[i]>max){ max=arr[i]; } } return i; } }
点赞 回复
分享
发布于 2017-09-02 18:27
import java.util.Scanner; public class Main1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) {//注意while处理多个case int n = in.nextInt(); // bear int m = in.nextInt(); // sugar int[] sugar = new int[m]; bear[] bears = new bear[n]; for (int i = 0; i < m; i++) { sugar[i] = in.nextInt(); } int forc; int star; bear b; for (int i = 0; i < n; i++) { forc = in.nextInt(); star = in.nextInt(); b = new bear(i,forc, star); bears[i] = b; } bubbleSortBear(bears); bubbleSortInt(sugar); int[] counts = new int[n]; for (int i = bears.length -1; i >= 0; i--) { int st = bears[i].starv; for (int j = sugar.length -1; j >= 0; j--) { if ( sugar[j] != 0 && st-sugar[j] >= 0){ st -= sugar[j]; sugar[j] = 0; } } counts[bears[i].index] = st; } for (int i = 0; i < counts.length; i++) { System.out.println(counts[i]); } } } public static void bubbleSortBear(bear[] array) { bear temp = null; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j].force > array[j + 1].force) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } public static void bubbleSortInt(int[] array) { int temp = 0; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } static class bear{ public int index; public int force; public int starv; public bear(int indx,int forc, int star){ index = indx; force = forc; starv = star; } } }
点赞 回复
分享
发布于 2017-09-03 15:55
两只熊  会不会有饥饿值相同的情况出现?
点赞 回复
分享
发布于 2017-09-03 16:36

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务