題目大意:給你n個數把他們連續的分成m組,問最小的那一組的最大值。
思路:用最小的那一個元素和總和進行二分。。。然後判斷最小那組為mid時,分組的個數。
#include#include #include #include #include using namespace std; int a[100010]; int N,M; bool f(int mid) //最小值為mid的時的個數 { int sum=0; int len=1; for(int i=1;i<=N;i++) { if(sum+a[i]<=mid) { sum+=a[i]; } else { sum=a[i]; len++; } } if(len>M) return false; else return true; } int main(int argc, char const *argv[]) { while(cin>>N>>M) { double high=0,low=0; for(int i=1;i<=N;i++) { cin>>a[i]; high+=a[i]; if(low