zoukankan      html  css  js  c++  java
  • 树状数组

    //树状数组
    //支持给某位置增加常数与查询前缀和
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,a[1001],tree[1001];//tree树状数组 
    int lowbit(int x)//表示2^k k是二进制数x的末尾0个数
    {
        return x&(-x); 
    }
    int query(int x)
    {
        int sum=0;
        int time=lowbit(x);
        for(int i=x;i>0;i-=time)
            sum+=tree[i];
        return sum;
    } 
    int add(int x,int y)
    {
        int time=lowbit(x);
        for(int i=x;i<=n;i+=time)
            tree[i]+=y;
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)//初始化1
        {
            cin>>a[i];
            add(i,a[i]);
        }
        //单位置修改+区间求和[L~R]
        {
            add(x,y);
            a[i]=y;
            
            int ans=query(R)-query(L-1);
        }
        for(int i=1;i<=n;i++)//初始化2 
        {
            cin>>a[i];
            add(i,a[i]-a[i-1]);
        }
        //区间修改[L~R]+单位置查询
        {
            add(L,y);
            add(R+1,-y);
            
            int ans=query(x); 
        }
        return 0;
    }
  • 相关阅读:
    lambda表达式
    切片操作
    小样本学习(Few-shot Learning)
    TensorFlow Eager 模式
    tensorflow读入数据集的方式
    综述类解读
    pyCharm永久激活
    shell脚本教程
    GNN
    Tomcat配置优化
  • 原文地址:https://www.cnblogs.com/water-radish/p/9280658.html
Copyright © 2011-2022 走看看