网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月16日漏签0天
poj吧 关注:631贴子:2,272
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回poj吧
>0< 加载中...

求助 2482

  • 只看楼主
  • 收藏

  • 回复
  • 2216465ax
  • 初梦OI
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码在下面 longlong 也开了 和标程对拍一直没问题. . 哪位dalao看看有什么问题..
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define uint unsigned int
using namespace std;
const int maxn=200000+10;
long long maxx[maxn*4],addv[maxn*4];
long long l,r;
struct T{
long long x,c;
long long y;
bool operator<(const T &a)const{
return x<a.x;
}
}A[maxn];
long long y[maxn];
long long tot=0;
long long L[maxn];
long long hash[maxn];
inline long long bs(long long x){
long long ll=1,rr=tot;
while(ll+1<rr){
long long mid=(ll+rr)>>1;
if(hash[mid]>=x)
rr=mid;
else ll=mid+1;
}
if(hash[ll]==x)
return ll;
else return rr;
}
long long ql,qr;
inline void pushdown(long long o){
if(addv[o]){
addv[o<<1]+=addv[o];
addv[o<<1|1]+=addv[o];
maxx[o<<1]+=addv[o];
maxx[o<<1|1]+=addv[o];
addv[o]=0;
}
}
inline void add(long long o,long long l,long long r,long long v){
pushdown(o);
if(ql<=l&&r<=qr){
addv[o]+=v;
maxx[o]+=v;
return ;
}
else if(l!=r){
int mid=(l+r)>>1;
if(ql<=mid)
add(o<<1,l,mid,v);
if(qr>mid)
add(o<<1|1,mid+1,r,v);
maxx[o]=max(maxx[o<<1],maxx[o<<1|1]);
}
}
int main(){
//freopen("a.out","r",stdin);
// freopen("bl.out","w",stdout);
long long n,w,h;
while(cin>>n>>w>>h){
memset(addv,0,sizeof(addv));
memset(maxx,0,sizeof(maxx));
for(long long i=1;i<=n;i++){
cin>>A[i].x>>A[i].y>>A[i].c;
y[i]=A[i].y;
}
if(w==0||h==0){
puts("0");
continue;
}
sort(y+1,y+n+1);
sort(A+1,A+n+1);
hash[++tot]=y[1];
for(long long i=2;i<=n;i++)
if(y[i]!=y[i-1])
hash[++tot]=y[i];
l=1;
for(long long i=1;i<=tot;i++){
while(hash[i]-hash[l]>=h)
l++;
L[i]=l;
}
long long ans=0;
l=1;
for(long long i=1;i<=n;i++){
while(l<i&&A[i].x-A[l].x>=w){
qr=bs(A[l].y);
ql=L[qr];
add(1,1,n,-A[l].c);
l++;
}
qr=bs(A[i].y);
ql=L[qr];
add(1,1,n,A[i].c);
if(maxx[1]>ans)
ans=maxx[1];
}
cout<<ans<<endl;
}
return 0;
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回poj吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示