P3353 在你窗外闪耀的星星

https://www.luogu.com.cn/problem/P3353
涉及知识点:贪心,前缀和,(线段树)
黄色题
 
思路:
没错,这是一眼就能看出是打前缀和的水题。但是我高兴的打完后却wa了。(10分)百思不得其解。后来才发现会有重点!!如果有好几个星星在同一个点上那么这个点的亮度是它们的亮度和。然后一遍跑过去就行了。sum[i]表示前i个点的星星亮度和。f[i]表示第i个点的亮度。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,w,b[1000005],ans=-1,f[1000005];
struct node{
    int x,w;
}a[1000005];
bool cmp(node a,node b)
{
    return a.x<b.x; 
}
int main()
{
    cin>>n>>w;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i].x>>a[i].w;
        f[a[i].x]+=a[i].w;
    }
    for(int i=1; i<=n; i++){
        b[i]=b[i-1]+f[i];
    }
    for(int i=w; i<=n; i++)
    {
        ans=max(ans,b[i]-b[i-w]);
    }
    cout<<ans;
    return 0;
 } 

 

posted @ 2022-07-19 18:38  -イレイナ  阅读(46)  评论(0)    收藏  举报