警示:如果你是77pts/88pts
查看原帖
警示:如果你是77pts/88pts
312820
Chinshyo楼主2023/10/5 16:07

抄书的区间可能是一个人抄一页,如果你的写法和我一样,这样是错的:

	for(int i = m; i >= 1; i--) {
        sum += a[i];
        if(sum <= ans) l = i;
        else {
            sum = a[i];
            L[tot] = l, R[tot--] = r;
            r = i;
        }
    }

原因:一个人负责一页的时候没有更新L。

改为如下即可AC:

	l = r = m;
    for(int i = m; i >= 1; i--) {
        sum += a[i];
        if(sum <= ans) l = i;
        else {
            sum = a[i];
            L[tot] = l, R[tot--] = r;
            l = r = i;
        }
    }
    L[1] = 1, R[1] = r;
2023/10/5 16:07
加载中...