听说考前写题解能增加 rp,我来水一发!
题目背景好评!
树状数组板子。
- 每次添加一颗星星,实际上就是树状数组的 update 操作。
- 求星星的亮度之和最大值即为树状数组的 sum 操作。
Talk is cheap, so here is code.
#include<bits/stdc++.h>
using namespace std;
#define N 100005
int n, w, t[N];
int lowbit(int x){ return x & (-x);}
void update(int x, int val){
while(x <= n)
t[x] += val, x += lowbit(x);
}
int sum(int x){
int ans = 0;
while(x > 0)
ans += t[x], x -= lowbit(x);
return ans;
}
int main(){
cin >> n >> w;
int mx = -1, x, y;
for(int i = 1; i <= n; i ++)
cin >> x >> y, update(x, y);
for(int i = w; i <= 1e5; i ++)
mx = max(mx, sum(i - 1) - sum(i - w - 1));
cout << mx << endl;
}

467

被折叠的 条评论
为什么被折叠?



