我是靠谱客的博主 聪明小笼包,这篇文章主要介绍hw 作业,现在分享给大家,希望可以做个参考。

import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
int[] data=new
int[a];
for(int i=0;i<a;i++){
// for(int j=0;j<b;j++){
data[i]=in.nextInt();
// }
}
int res=subfunc(data,b);
System.out.println(res);
}
}
// 日志限流
public static int subfunc(int[]data,int total){
int len=data.length;
int sum=0;
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;
for(int i=0;i<len;i++){
max=Math.max(max,data[i]);
min=Math.min(min,data[i]);
sum+=data[i];
}
// System.out.println(min);
if(sum<=total){
return -1;
}
int temp=sum-total;
int cursum=0;
for(int i=max;i>=min;i--){
cursum=addsum(data,i);
if(cursum<=total){
// System.out.println(i);
return i;
}
}
return -1;
}
public static int addsum(int[] data,int top){
int sum=0;
for(int i=0;i<data.length;i++){
if(data[i]<=top){
sum+=data[i];
}
else{
sum+=top;
}
}
return sum;
}
}

int left=avrage;
int right=max;
int mid=0;
while(left<right){
mid=(left+right)/2;
int nowsum=addsum(data,mid);
if(nowsum<=total){
left=mid+1;
}
if(nowsum>total){
right=mid-1;
}
}
return mid;

最后

以上就是聪明小笼包最近收集整理的关于hw 作业的全部内容,更多相关hw内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部