• ACM-ICPC 2018 徐州赛区网络预赛 G. Trace-树状数组-区间修改,单点查询


    赛后和队友讨论了一波,感谢无敌的队友给我细心的讲题

    先埋坑

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    const int maxn = 1e5+7;
    const int maxx = 1e7+5;
    int treex[maxx];
    int treey[maxx];
    int n,maxxx = 0;
    int lowbit(int x){
      return x&-x;
    }
    void add(int i,int x,int *tre){
      while(i<=maxxx){
        tre[i]+=x;
        i+=lowbit(i);
      }
    }
    int sum(int i,int *tre){
      int ans=0;
      while(i>0){
        ans+=tre[i];
        i-=lowbit(i);
      }
      return ans;
    }
    int main(){
      int x[maxn],y[maxn];
      while(~scanf("%d",&n)){
        for (int i=1;i<=n;i++){
            scanf("%d%d",&x[i],&y[i]);
            maxxx=max(maxxx,max(x[i],y[i]));
        }
        long long ans = 0;
        for(int i=n;i>=1;i--){
           int xx=x[i];
           int yy=y[i];
           int lenx=sum(yy,treex);
           int leny=sum(xx,treey);
    
           add(lenx+1,yy-leny,treey);
           add(leny+1,xx-lenx,treex);
           ans += xx - lenx;
           ans += yy - leny;
           add(xx+1,leny-yy,treey);
           add(yy+1,lenx-xx,treex);
        }
        cout<<ans<<endl;
      }
      return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    mode
    文件操作
    深浅拷贝
    基础数据类型补充
    再谈编码 decode和encode
    Python练习题 015:一颗自由落地的球
    Python练习题 014:完数
    Python练习题 013:求解a+aa+aaa……
    Python练习题 012:字符统计
    Python练习题 011:成绩打分
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9624663.html
Copyright © 2020-2023  润新知