本文共 1175 字,大约阅读时间需要 3 分钟。
#include #include #include #include #include #include #include #include #include #include using namespace std; #define MM(a) memset(a,0,sizeof(a)) typedef long long ll; typedef unsigned long long ULL; const int mod = 1000000007; const double eps = 1e-10; const int inf = 0x3f3f3f3f; const int big=50000; int max(int a,int b) {return a>b?a:b;}; int min(int a,int b) {return a >1); build(2*k+2,(l+r)>>1,r); } void update(int k) { while(k>0) { k=(k-1)/2; data[k]=max(data[2*k+1],data[2*k+2]); } } void add(int k,int a,int b,int l,int r,int v) { //cout<<"3"< =b) { //printf("1\n"); return; } else if(l<=a&&b<=r) { data[k]+=v; update(k); //printf("2\n"); return; } else if(r>a&&l >1,l,r,v); add(2*k+2,(a+b)>>1,b,l,r,v); } } int main() { int n,a,b,rr; ne[0].y=0; while(~scanf("%d %d %d",&n,&a,&b)) { rr=0; for(int i=1;i<=n;i++) { scanf("%d %d %d",&ne[i].x,&ne[i].y,&ne[i].v); rr=max(rr,ne[i].x); } sort(ne+1,ne+n+1,cmp); build(0,0,rr+1); int ans=0,l=0,r=0; for(;;) { //cout<<"///1"< n) break; //cout<<"2"< n) break; add(0,1,rr+1,ne[l].x-a+1,ne[l].x+a,-ne[l].v); l++; } printf("%d\n",ans); } return 0; }
转载地址:http://btgsi.baihongyu.com/