1. 程式人生 > >P3353 在你窗外閃耀的星星

P3353 在你窗外閃耀的星星

b數 是什麽 背景 include 最好的 cst pri code con

黃題爆冷了怎麽辦在線等挺急的啊。。。


題目背景我很認真地看完了。

我哭了,你們呢?

一拳一個淚目怪


這道題一眼看上去就是一個前綴和的。然後我就興致沖沖地寫了一發,交上去10pt,WA聲一片。

最初的想法很弱智,我以為他給的星星是按x升序給的。

並且還有一點:星星可能會重合。一個點可能會有多個星星。這些都是我沒考慮到的。

所以最好的方法是什麽?

直接開一個b數組,記錄每一個x坐標的星星亮度。

詢問的話就先預處理個前綴和,然後進行\(n\)\(O(1)\)的詢問。復雜度\(O(n)\)

代碼:

#include<cstdio>
#include<algorithm>

const int maxn = 100005;

int maxx;
int b[maxn];
int n, w;
int main()
{
    scanf("%d%d", &n, &w);
    for(int i = 1; i <= n; i++)
    {
        int xx, bb; scanf("%d%d", &xx, &bb);
        b[xx] += bb;
        maxx = std::max(maxx, xx);
    }
    for(int i = 1; i <= maxx; i++) b[i] += b[i - 1];
    int ans = -19260817;
    for(int i = 1; i + w - 1 <= maxx; i++)
    {
        ans = std::max(ans, b[i + w - 1] - b[i - 1]);
    }
    printf("%d\n", ans);
    return 0;
}

P3353 在你窗外閃耀的星星