洛谷 U86564 排队形
洛谷 U86564 排队形
题目背景
\(JDFZ2019\)秋季运动会开始辣!为了使强大的高一 · \(6\)班有一个更好的精神面貌,班主任\(T\)老师和体委\(LY\),\(LYB\)开始排班级的队形......
题目描述
队形是一个不规则图形(要是规则的话还排什么),分为\(N\)列,每列有数量不定的同学(排队开始前每列都没有同学)。三个排队形的人有明确的分工:\(LY\)(代号为\(A\))负责往队列中加人,\(LYB\)(代号为\(B\))负责从队列中减去使队列不协调的人,而\(T\)老师(代号为\(C\))只需要检查就可以了。排队开始后,他们会按时间顺序发出不同的指令(为了与其他人区别开,他们每个人发出指令前都会喊出自己的代号):\(LY\)发出的指令中包括两个数\(M_1,K_1\),表示第\(M_1\)列加入\(K_1\)位同学;\(LYB\)发出的指令中包括两个数\(M_2,K_2\),表示第\(M_2\)列中删除\(K_2\)位同学;\(T\)老师发出的指令中也包括两个数\(P,Q\),表示她现在想知道从第\(P\)列到第\(Q\)列的总人数。
输入格式
第一行有两个整数\(N,D\),表示有\(N\)列,\(D\)个指令。
接下来有\(D\)行,每行开头先包括一个代号(\(A,B,C\)其中的一个),并按题目所述发出他/她的指令。
输出格式
输出行数与\(T\)老师的提问数相等,每行一个整数,回答\(T\)老师的问题。
样例输入
10 7
C 1 1
A 1 1
A 3 1
A 4 1
C 1 2
C 1 3
C 1 10
样例输出
0
1
2
3
提示:
数据范围:
对于30%的数据,\(1\le N,D\le 10^4\),\(T\)老师至少提问\(1000\)次。
对于全部数据,\(1\le N,D\le 10^5\),\(T\)老师至少提问\(30000\)次。
题解:
树状数组的题目。
我觉得应该算是裸题了,最后区间统计利用前缀和的思想就好。
代码:
#include<cstdio>
#include<iostream>
using namespace std;
int n,d;
int tree[500001];
void update(int x,int y)
{
for(int i=x;i<=n;i+=i&-i)
tree[i]+=y;
}
int query(int x)
{
int ret=0;
for(int i=x;i;i-=i&-i)
ret+=tree[i];
return ret;
}
int main()
{
//freopen("6.in","r",stdin);
//freopen("6.out","w",stdout);
scanf("%d%d",&n,&d);
while(d--)
{
char ch;
cin>>ch;
if(ch=='A')
{
int m,k;
scanf("%d%d",&m,&k);
update(m,k);
}
else if(ch=='B')
{
int m,k;
scanf("%d%d",&m,&k);
update(m,-k);
}
else if(ch=='C')
{
int p,q;
scanf("%d%d",&p,&q);
printf("%d\n",query(q)-query(p-1));
}
}
return 0;
}
洛谷 U86564 排队形的更多相关文章
- 洛谷 P1091 合唱队形
\[传送门在这里呀\] 题目描述 \(N\)位同学站成一排,音乐老师要请其中的\((N-K)\)位同学出列,使得剩下的\(K\)位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次 ...
- 洛谷P1056 排座椅
洛谷P1056 排座椅 洛谷传送门 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有 ...
- 洛谷 P1056 排座椅 桶排序
桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...
- 洛谷 P2355 团体操队形
P2355 团体操队形 题目背景 X中学要团体操比赛了哦.队形该怎样排呢? 题目描述 有n(n<=100000)个团体操队员编号分别为1~n,参加运动会开幕式的团体操表演.其基本队形(分连续队形 ...
- (Java实现) 洛谷 P1091合唱队形
题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2,-,K,他们的身 ...
- 洛谷p1091合唱队形题解
题目 合唱队形首先要满足的是从1这个位置到中间任意的位置为单增的,从中间任意的位置到最后是单减的,且长度最长.这样才能满足出列的同学最少. 如果要满足这个条件那么我们可以先预处理出每个点的从前找的最长 ...
- codevs1058 合唱队形==洛谷P1091 合唱队形
P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的 ...
- 洛谷 P1056 排座椅【贪心/结构体排序】
题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...
- [NOIP2004] 提高组 洛谷P1091 合唱队形
题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2, ...
随机推荐
- nowcoder941B 弹钢琴
题目链接 思路 首先按照音色排个序,顺便离散化一下音高. 用\(h[i]\)表示第\(i\)个键的音高,用\(w[i]\)表示第\(i\)个键的春希度. 朴素\(dp\) \(f[i][j]\)表示前 ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) D. Power Products 数学 暴力
D. Power Products You are given n positive integers a1,-,an, and an integer k≥2. Count the number of ...
- VBA实战 - 一个简单的 httplib
概要 VBA 的应用场景基本都还是在单机应用, 随着 Web 应用的风靡, 以及浏览器越来越强大, 单机类的应用逐渐没落. 虽然 Web 应用越来越多, 功能和体验也越来越好, 但是 Excel 依然 ...
- pytorch——auto-encoders
自动编码器的训练方法: (1)Loss function for binary inputs (2)Loss function for real-valued inputs
- Elasticsearch搜索调优权威指南 (2/3)
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/AAkVdzmkgdBisuQZldsnvg 英文原文:https://qbox.io/blog/el ...
- Element-ui 下拉列表 全选 多选时 select全选 新增一个选择所有的选项
项目里经常会用到,在一个多选下拉框里新增一个选择所有的选项,例如: <!DOCTYPE html> <html lang="en"> <head> ...
- eclipse查看一个方法被谁调用的快捷键
我们知道,在idea中是可以通过[ctrl+鼠标左键单击]去跳到方法调用方去的,但是在eclipse中却是不行的. 三种快捷键方式 这里列出在eclipse中查看一个方法被谁调用的三种方式(快捷键). ...
- Kubernetes RBAC授权普通用户对命名空间访问权限
Kubernetes RBAC授权普通用户对命名空间访问权限 官方文档:https://www.cnblogs.com/xiangsikai/p/11413970.html kind: Role ap ...
- kafka中消费者消费消息之每个线程维护一个KafkaConsumer实例
1.首先启动自己的kafka集群哟. 启动zk: bin/zkServer.sh start conf/zoo.cfg. 验证zk是否启动成功: bin/zkServer.sh status conf ...
- vertx-mysql-client/java/
Reactive MySQL Client是MySQL的客户端,它具有直接的API,专注于可伸缩性和低开销. 特征 事件驱动 轻巧的 内置连接池 准备查询缓存 游标支持 行流 RxJava 1和RxJ ...