懵懂的菜鸟

Stay hungry,Stay foolish.

导航

链家笔试链家——找寻最小消费获取最大平均分java

链家找寻最小消费获取最大平均分

输入:

5 5 4#表示科目数n,每科最大分值r,平均分avg

5 2#每科的实际得分,分数加1分的消耗的能量

4 7

3 1

3 2

2 5

输出:

4 #到达n*avg消耗的最小能量

 

package Campus;
import java.io.*;
import java.util.*;
public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        int n, r, avg;
        
        n = cin.nextInt();
        r = cin.nextInt();
        avg = cin.nextInt();
        int[][] arr = new int[n][2];
        for(int i = 0; i < n; i++){
           for(int j = 0; j < 2; j++){
               arr[i][j] = cin.nextInt();
           }
        }
        
        int temp_sum = 0;
        for(int i = 0; i < n; i++){
            temp_sum += arr[i][0];
         }
        int temp_avg = 0;
        temp_avg = temp_sum / n;
        
        if (temp_avg >= avg){
            System.out.println(0);
        }else{
            int[] arr0 = new int[n];
            int[] arr1 = new int[n];
            for(int i = 0; i < n; i++){
                arr0[i] = arr[i][0];
                arr1[i] = arr[i][1];
             }
            int temp0=0;
            int temp1=0;
            for(int i = 0; i < n-1; i++){
                for(int j = i; j< n; j++){
                    if(arr0[i] < arr0[j]){
                        temp0=arr0[i];
                        temp1=arr1[i];
                        arr0[i]=arr0[j];
                        arr1[i]=arr1[j];
                        arr0[j]=temp0;
                        arr1[j]=temp1;
                        
                    }
             }
            }
            //记录差多少分
            int temp3 = 0;
            temp3 = n*avg-temp_sum;
            for(int i = 0; i < n; i++){
                if(arr0[i] >= avg) continue;
                else{
                    for(int j= i;j < n-1; j++){
                        for(int k = j+1; k< n; k++){
                            if(arr1[j] > arr1[k]){
                                temp0=arr0[i];
                                temp1=arr1[i];
                                arr0[j]=arr0[k];
                                arr1[j]=arr1[k];
                                arr0[k]=temp0;
                                arr1[k]=temp1;
                                
                            }
                     }
                    
                    }
                    //记录临时坐标差
                    int temp4 = temp3;
                    int temp5 = 0;
                    for (int g = i; g < n; g++){
                        temp4=temp4-arr1[i]*(r-arr0[i]);
                        temp5=temp5+arr1[i]*(r-arr0[i]);
                        if ( temp4<=0){
                            System.out.println(temp5);
                            break;
                        }
                    }
                }
                for(int v = 0; v < n; v++){
                    System.out.println(arr0[v]+","+arr1[v]);
                }
                break;
            }
        }
    }
}

 

posted on 2017-10-10 21:24  懵懂的菜鸟  阅读(178)  评论(0编辑  收藏  举报