一个细节
查看原帖
一个细节
182234
ryanright楼主2023/11/1 19:09

这个代码能 AC:

inline int calc(int x, int l, int r) {
    if (c[x] >= 0)
        return (r - l + 1) * b[x] + (l + r) * (r - l + 1) / 2 * c[x];
    int mid = (1 - b[x]) / c[x];
    if (mid < l)
        return r - l + 1;
    if (mid > r)
        return (r - l + 1) * b[x] + (l + r) * (r - l + 1) / 2 * c[x];
    return (mid - l + 1) * b[x] + (l + mid) * (mid - l + 1) / 2 * c[x] + r - mid;
}

但是我把其中一条式子都写错了,还能拿 95 分。写错的代码是长这样的(我跟题解对比的时候真的挺费眼的)。

inline int calc(int x, int l, int r) {
    if (c[x] >= 0)
        return (r - l + 1) * b[x] + (l + r) * (r - l + 1) / 2 * c[x];
    int mid = (1 - b[x]) / c[x];
    if (mid < l)
        return r - l + 1;
    if (mid > r)
        return (r - l + 1) * b[x] + (l + r) * (r - l + 1) / 2 * c[x];
    return (mid - l + 1) * b[x] + (l + mid) * (l - mid + 1) / 2 * c[x] + r - mid;
}
2023/11/1 19:09
加载中...