首页 > 其他分享 >Queries Gym - 100741A - 树状数组

Queries Gym - 100741A - 树状数组

时间:2022-12-05 22:22:52浏览次数:42  
标签:10 int Gym cin add 100741A Queries mod op

给定 \(n\) 和 \(m\),对于 \(n\) 个数字 \(a_i\),进行下列三种操作:
(1) + p r: 将 p 位置的元素加上 r, 输出此时 p 位置的值;
(2) - p r : 将 p 位置的元素减去 r,若 p 位置的值小于r 则不进行减法,输出此时 p 位置的值;
(3) s l r mod:求区间 [l, r] 中值 %m==mod 的所有元素的和,输出该和。

Input

第 \(1\) 行 \(n,m\);
第 \(2\) 行 \(n\) 个数 \(a_i\);
第 \(3\) 行 \(q\);
接下来 \(q\) 行,每行对应一种操作;

Output

输出 \(q\) 行,为每次操作的结果。
数据范围:\(1≤n,q≤10^4, 1≤m≤10, 0≤a_i≤10^9\)。

Input Output
3 4
1 2 3
3
s 1 3 2
+ 2 1
- 1 2
2
3
1

分析

多个树状数组

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e4+10,INF=0x3f3f3f3f;
int n,m,q;
LL tree[10][N],a[N];

#define lowbit(x) (x&-(x))
void add(int k,int x,int y){
    while(x<=n) tree[k][x]+=y, x+=lowbit(x);
}
LL sum(int k,int x){
    LL res=0;
    while(x) res+=tree[k][x], x-=lowbit(x);
    return res;
}
int main(){
    // freopen("data.in", "r", stdin);
    cin>>n>>m;
    for(int i=1; i<=n; i++)cin>>a[i], add(a[i]%m, i, a[i]);
    cin>>q; char op; int p,l,r,mod;
    while(q--){
        cin>>op;
        if(op=='+'||op=='-'){
            cin>>p>>r;
            if(op=='-') r*=-1;
            if(a[p]+r >= 0) {
                add((a[p]%m+m)%m, p, -a[p]);
                a[p] += r;
                add((a[p]%m+m)%m, p, a[p]);
            }
            cout<<a[p]<<endl;
        }else{
            cin>>l>>r>>mod;
            cout<<sum(mod, r)-sum(mod,l-1)<<endl;
        }
    }
    return 0;
}

标签:10,int,Gym,cin,add,100741A,Queries,mod,op
From: https://www.cnblogs.com/hellohebin/p/16953717.html

相关文章

  • 最新版gym-0.26.2中Atari环境下各游戏在不同模式和困难度下的遍历
    相关内容参看前文:​​最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明​​  =========================================== gym中Atari游戏共收录62个游戏,具......
  • ABC246Ex 01? Queries 题解
    ABC246Ex01?QueriesSolution目录ABC246Ex01?QueriesSolution更好的阅读体验戳此进入浅谈DDP与广义矩阵乘法(戳此进入)引入例题#1广义矩阵乘法DDP例题#0例题#0.5......
  • 最新版gym-0.26.2中Atari环境下各游戏在不同模式和困难度下的遍历
    相关内容参看前文:最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明  ============================================......
  • 最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明
    强化学习的游戏仿真环境可以分为连续控制和非连续控制两类,其中连续控制的以mujoco为主,而非连续控制的以Atari游戏为主,本文对gym下的Atari环境的游戏环境版本进行一定的介绍......
  • Codechef-Cringe Queries
    这题的代码很短,但是建模很有思维含量,好题,记录一下题意:给定n,q,表示一个数组长度为n(初始下标从1开始),初始时全为0总共有q种操作,每个操作给定一个区间[l,r]表示可以将......
  • Codeforces Gym 100958 E Cellular Automaton (Makoto rng_58 Soejima contest) 题解
    题目链接其实"序列中1的数量有限"是一个非常重要的条件。这意味着我们可以找到序列中的第一个1和最后一个1。考虑这样一件事情:初始时我们把一个长度为\(2^{2w+1}\)的"滑......
  • HDU 3726 Graph and Queries
    DescriptionYouaregivenanundirectedgraphwithNvertexesandMedges.Everyvertexinthisgraphhasanintegervalueassignedtoitatthebeginni......
  • L - Fenwick Tree Gym - 103861L(打表,树状数组)
    题意:一开始数组的每个数都是零对于每次操作:可以对一个数加上一个实数在加上实数的同时,对应的i+lowbit(i)一直到<=n都会加上这个实数不同操作可以加上不同的实......
  • F. MEX Queries
    F.MEXQueries分析不得不说,题目不算难。但是非常考验选手的基础。我会把我出的问题放出到最后,给大家一些错误提示。我们使用动态开点维护权值线段树。我们先来看四个......
  • L - Intersection and Union Gym - 103993L (线段树)
    题意思路思路很巧妙,首先是枚举每个值的贡献,然后找到了规律,下次做题的时候线分析每个题有啥好规律,然后根据规律做题。再就是线段树的这个思路,感觉很巧妙,通过设置每一段的......