输出端点不对求助
查看原帖
输出端点不对求助
621762
Final_楼主2022/2/20 15:37

RT WA#1,然后输出了一下左右端点发现重复求助

#include <bits/stdc++.h>

using namespace std;

const int N = 555;

int m, k;
int a[N];
int L[N], R[N];

bool check(int x)
{
    int sum = 0;
    int cnt = 1;
    R[cnt] = m;
    for (int i = m; i; i --)
    {
        if (sum + a[i] <= x)
            sum += a[i];
        else
        {
            L[cnt] = i + 1;
            R[++ cnt] = i;
            sum = a[i];
        }
    }

    L[cnt] = 1;
    return cnt <= k;
}

void sf()
{
    cin >> m >> k;
    for (int i = 1; i <= m; i ++)
        scanf("%d", &a[i]);

    int l = 1, r = (int) 1e9;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid))
            r = mid;
        else
            l = mid + 1;
    }

    check(l);
    for (int i = k; i; i --)
        printf("%d %d\n", L[i], R[i]);
}

int main()
{
    int t;
    cin >> t;
    while (t --) sf();
    return 0;
}

2022/2/20 15:37
加载中...