Queries Gym - 100741A - 树状数组
给定 \(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 |
2 |
分析
多个树状数组
#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;
}
Queries Gym - 100741A - 树状数组的更多相关文章
- Codeforces 1167 F Scalar Queries 计算贡献+树状数组
题意 给一个数列\(a\),定义\(f(l,r)\)为\(b_1, b_2, \dots, b_{r - l + 1}\),\(b_i = a_{l - 1 + i}\),将\(b\)排序,\(f(l ...
- Gym - 101908C 树状数组 逆序对
Grandpa Giuseppe won a professional pizza cutter, the kind of type reel and, to celebrate, baked a r ...
- GYM 100741A Queries(树状数组)
A. Queries time limit per test 0.25 seconds memory limit per test 64 megabytes input standard input ...
- gym 100589A queries on the Tree 树状数组 + 分块
题目传送门 题目大意: 给定一颗根节点为1的树,有两种操作,第一种操作是将与根节点距离为L的节点权值全部加上val,第二个操作是查询以x为根节点的子树的权重. 思路: 思考后发现,以dfs序建立树状数 ...
- Codeforces Gym 100114 H. Milestones 离线树状数组
H. Milestones Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descripti ...
- Gym 101908C - Pizza Cutter - [树状数组]
题目链接:https://codeforces.com/gym/101908/problem/C 题意: 一块正方形披萨,有 $H$ 刀是横切的,$V$ 刀是竖切的,不存在大于等于三条直线交于一点.求 ...
- Codeforces Gym 100269F Flight Boarding Optimization 树状数组维护dp
Flight Boarding Optimization 题目连接: http://codeforces.com/gym/100269/attachments Description Peter is ...
- Codeforces 375D Tree and Queries(DFS序+莫队+树状数组)
题目链接 Tree and Queries 题目大意 给出一棵树和每个节点的颜色.每次询问$vj, kj$ 你需要回答在以$vj$为根的子树中满足条件的的颜色数目, 条件:具有该颜色的节点数量至少 ...
- CodeForces - 369E Valera and Queries(树状数组)
CodeForces - 369E Valera and Queries 题目大意:给出n个线段(线段的左端点和右端点坐标)和m个查询,每个查询有cnt个点,要求给出有多少条线段包含至少其中一个点. ...
- CodeForces - 375D Tree and Queries (莫队+dfs序+树状数组)
You have a rooted tree consisting of n vertices. Each vertex of the tree has some color. We will ass ...
随机推荐
- mysql 5.7 gtid 主从复制
GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID 主库#开启gtidlog-bin=mysql-binexpire_logs_days = 5binlog_format=r ...
- 渗透H5棋牌游戏-棋牌游戏开发
0x01 前言 本來不想发的,涉及太多利益了,這些棋牌游戏的源码最高能卖到几万.开发起来不比一个商场进程难. 最近又太忙了,沒时间去做代码审计的文章了,但一不小心又抢了个运气王... 0x02 开始 ...
- 记一次 turbostat 的使用
场景:为了测试海光cpu的性能,从而使用turbostat 来监测cpu工作时候的相关频率. cpu 型号: 1.Hygon C86 7165 24-core Processor 1.9GHz 384 ...
- 获取Java运行环境信息
设备相关信息 获取设备名称 import java.net.InetAddress; import java.net.UnknownHostException; try { InetAddress l ...
- 常用Linxu指令
1.查看端口占用情况 1.查看所有的服务端口: netstat -a 2.查看所有端口并显示进程号(PID): netstat -ap 若需停止某一进程,可通过kill PID来杀死进程或者用kill ...
- CI2454国产8位RISC核SoC芯片
Ci2454是一款集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片.主要应用在遥控玩具.智能灯控.数据透传.工业控制等领域.无线收发器主要特性 工作在 2.4GHz ISM 频段. 调制方 ...
- Java语言中的复合运算符会自动进行类型转换
计算1/1-1/2+1/3+--+1/99-1/100 public class LoopControlExercise08{ public static void main(String[] arg ...
- shell_Day03
嗯,这是第二天,吧 wc word count 统计文本文件中的字符个数 -l 查看行数 -w 查看字符个数 -c 查看文件大小(字节) cut 用来分割文件内容 -d 指定分隔符,delimit ...
- moment 时区问题
moment.parseZone('2023-01-11T16:54:31.6864601').utc().format('YYYY-MM-DD HH:mm:ss') 文档 | Momen ...
- OM6621P系列国产M4F内核低功耗BLE5.1 SoC蓝牙芯片
随着5G与物联网时代到来,智慧城市.电动出行.智能家居.可穿戴设备等应用高速发展,低功耗蓝牙技术在近几年智能化浪潮中的地位也尤为重要.OM6621P系列的开发即是为解决国内低功耗蓝牙应用设计需求,其主 ...