zoukankan      html  css  js  c++  java
  • 计蒜客 斑点蛇

      解析

      线段树点操作版题,注意范围判断。

      代码

      

    #include<bits/stdc++.h>
    #define MAXN 50004
    using namespace std;
    
    int s_tree[4*MAXN];
    int n;
    
    void up(int p)
    {
        s_tree[p]=s_tree[p*2]+s_tree[p*2+1];
    }
    
    void modify(int p,int l,int r,int x,int v,int flag)
    {
        if(l==r)
        {
            if(flag==1)
            {
                s_tree[p]+=v;
                return;
            }
            else 
            {
                s_tree[p]-=v;
                return;
            }
        }
        int mid=(l+r)/2;
        if(x<=mid) modify(p*2,l,mid,x,v,flag);
        else modify(p*2+1,mid+1,r,x,v,flag);
        up(p);
    }
    
    int query(int p,int l,int r,int x,int y)
    {
        if(x<=l&&r<=y)//范围判断
        {
            return s_tree[p];
        }
        int res=0;
        int mid=(l+r)/2;
        if(x<=mid) res+=query(p*2,l,mid,x,y);
        if(y>mid) res+=query(p*2+1,mid+1,r,x,y);
        return res;
    }
    
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int a;
            cin>>a;
            modify(1,1,n,i,a,1);
        }
        string st;
        int sa,sb;
        while(cin>>st)
        {
            if(st=="End") break;
            cin>>sa>>sb;
            if(st=="Query")
            {
                cout<<query(1,1,n,sa,sb)<<endl;
            }
            else if(st=="Add") 
            {
                modify(1,1,n,sa,sb,1);
            }
            else if(st=="Sub")
            {
                modify(1,1,n,sa,sb,0);
            }
        }
        return 0;
    }
  • 相关阅读:
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Arctic Network POJ
    Truck History POJ
    QS Network ZOJ
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9365906.html
Copyright © 2011-2022 走看看