• hdu1166


    去你妈蛋超时个鬼

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    using namespace std;
    struct node{
     int l,r,n;
    }t[50005];
    int ans;
    void build(int l,int r,int k){
     if(l==r){
      t[k].l=l;
      t[k].r=r;
      t[k].n=0;
      return ;
     }
     t[k].l=l;
     t[k].r=r;
     t[k].n=0;
     int m=(l+r)/2;
     build(l,m,2*k);
     build(m+1,r,2*k+1);
    }
    void insert(int x,int cur,int k){
     if(t[k].l==t[k].r&&t[k].l==cur){
      t[k].n+=x;
      return ;
     }
     int m=(t[k].l+t[k].r)/2;
     if(cur<=m)
       insert(x,cur,2*k);
     else
       insert(x,cur,2*k+1);
     t[k].n=t[2*k].n+t[2*k+1].n;
    }
    void find(int a,int b,int k){
     if(a<=t[k].l&&t[k].r<=b){
      ans+=t[k].n;
      return ;
     }
     int m=(t[k].l+t[k].r)/2;
     if(a>m)
       find(a,b,2*k+1);
     else if(b<=m)
       find(a,b,2*k);
     else{
      find(a,b,2*k);
      find(a,b,2*k+1);
     }
     
    }
    int main(){
     int n,m;
     scanf("%d",&m);
     for(int i=1;i<=m;i++){
      cout<<"Case"<<" "<<i<<":"<<endl;
      int n;
      scanf("%d",&n);
      build(1,n,1);
      for(int i=1;i<=n;i++){
       int x;
       scanf("%d",&x);
       insert(x,i,1);
      }
      char a[6];
      while(scanf("%s",a)){
       ans=0;
       if(a[0]=='E')
         break;
       if(a[0]=='Q'){
        int x,y;
        cin>>x>>y;
        find(x,y,1);
        cout<<ans<<endl;
       }
       else if(a[0]=='A'){
        int x,y;
        cin>>x>>y;
        insert(y,x,1);
       }
       else {
        int x,y;
        cin>>x>>y;
        insert(-y,x,1);
       }
      }
     }
     return 0;
    }

  • 相关阅读:
    Linux查询python路径
    yarn.nodemanager.vmempmemratio的通俗解释(转载)
    Hive中count(1)结果为0的原因
    Yarn资源调度过程详细(TEZ)
    hive分区表新增字段需要加cascade
    【Tokio】最大阻塞线程数
    【Tokio】设置工作线程数
    【Tokio】自定义线程名称
    【Tokio】运行时建造器
    【Tokio】启用新功能
  • 原文地址:https://www.cnblogs.com/20003238wzc--/p/4788778.html
Copyright © 2020-2023  润新知