二分 Monthly Expense

xiaoxiao2025-10-10  15

import java.util.*; public class Main{ Scanner scan=new Scanner(System.in); int n,m ,L=0,R=0; int[] s=new int [100010]; public Main() { super(); input(); js(); } public void input() { n=scan.nextInt(); m=scan.nextInt(); for (int i = 0; i < n; i++) { s[i]=scan.nextInt(); L=Math.max(L, s[i]); R+=s[i]; //出错地方 不要想当然 } } public boolean judge(int mid) { int sum=0,j=0; for (int i = 0; i < n;i++) { if(sum+s[i]>mid) { j++; sum=s[i]; } else { sum+=s[i]; } } if(++j<=m) return true; else return false; } public void js() { while(L<R) { int mid=L+(R-L)/2; if(judge(mid)) R=mid; else L=mid+1; } System.out.println(R); } public static void main(String[] args) { new Main(); } }

 

转载请注明原文地址: https://www.6miu.com/read-5037694.html

最新回复(0)