二分答案模板题,样例都没过呜呜呜
查看原帖
二分答案模板题,样例都没过呜呜呜
843596
Otion楼主2023/2/22 18:28
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
long long num[N];
int demand;
int total_num;
inline bool check(long long max_sum)
{
    long long temp_sum = 0;
    int gap = 0;
    for (int i = 1; i < total_num; i++)
    {
        if (temp_sum + num[i] <= max_sum)
        {
            temp_sum += num[i];
        }
        else
        {
            temp_sum = num[i];
            gap++;
        }
    }
    return gap >= demand;
}
int main()
{
    cin >> total_num >> demand;
    long long left = 0;
    long long right = 0;
    for (int i = 0; i < total_num; i++)
    {
        cin >> num[i];
        right += num[i];
        left = max(left, num[i]);
    }
    int ans = 0;
    while (left <= right)
    {
        long long mid = (left + right) / 2;
        if (check(mid))
        {
            ans = mid;
            right = mid - 1;
        }
        else
        {
            left = mid + 1;
        }
    }
    cout << left << endl;
    return 0;
}
2023/2/22 18:28
加载中...