Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
127740 罗恩祥 花费 C++ 解答错误 50 0 MS 264 KB 892 2024-01-25 10:06:33

Tests(5/10):


#include <bits/stdc++.h> using namespace std; long long lst[100001]; long long lst2[100001]; long long N,M; //N分成M bool check(long long num) { long long k = 1; //分成几天 long long sum = 0; for(int i = 1;i <= N;i++) { if(sum + lst[i] > num) { k++; sum = lst[i]; } else sum += lst[i]; } return k <= M; } int main() { cin >> N >> M; long long S = 0,Max = 0,Min = 0x3f3f3f3f; for(int i = 1;i <= N;i++) { cin >> lst[i]; S += lst[i]; Max = max(Max,lst[i]); Min = min(Min,lst[i]); } if(N == M) //分成的份数 == 总份数 { cout << Max; return 0; } if(M == 1) { cout << S; return 0; } long long l = Min,r = Max + 1; long long minn = 0x3f3f3f3f; while(l < r) { long long mid = (l + r) / 2; if(check(mid)) r = mid; else l = mid + 1; } cout << r << endl; }


测评信息: