清点人数

问题 D: 清点人数

时间限制: 1 Sec  内存限制: 128 MB
提交: 16  解决: 9
[提交] [状态] [讨论版] [命题人:admin]

题目描述

NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去。由于NK中学的学生很多,在火车开之前必须清点好人数。
初始时,火车上没有学生。当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能有同学上下。年级主任走到第m节车厢时,他想知道前m节车厢上一共有多少学生,但是他没有调头往回走的习惯。也就是说每次当他提问时,m总会比前一次大。

输入

第一行两个整数n,k,表示火车共有n节车厢以及k个事件。
接下来有k行,按时间先后给出k个事件,每行开头都有一个字母A,B或C。
如果字母为A,接下来是一个数m,表示年级主任现在在第m节车厢;
如果字母为B,接下来是两个数m,p,表示在第m节车厢有p名学生上车;
如果字母为C,接下来是两个数m,p,表示在第m节车厢有p名学生下车。
学生总人数不会超过105

输出

对于每个A,输出一行,一个整数,表示年级主任的问题的答案。

样例输入

复制样例数据

10 7
A 1
B 1 1
B 3 1
B 4 1
A 2
A 3
A 10

样例输出

0
1
2
3

提示

对于全部数据,1≤n≤5×105,1≤k≤105

解题思路:裸的树状数组查询,修改。

#include<bits/stdc++.h>
#include<queue>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<iostream>
#define REP(i, a, b) for(int i = (a); i <= (b); ++ i)
#define REP(j, a, b) for(int j = (a); j <= (b); ++ j)
#define PER(i, a, b) for(int i = (a); i >= (b); -- i)
using namespace std;
const int maxn = 1e7 + 5;
int n, k,p[maxn];
int lowbit(int a) {
    return a & (-a);
}
int sum(int a) {
    int val=0;
    while (a) val += p[a], a -= lowbit(a);
    return val;
}
void update(int a,int w) {
    while (a<=n)p[a] += w,a+=lowbit(a);
}
int main(){
    cin >> n>>k;
    int cur,z;
    while (k--) {
        char q;
        cin >> q>>cur;
        if (q == ‘A‘) {
            cout << sum(cur) << endl;
        }
        else if (q == ‘B‘) {
            cin >> z;
            update(cur, z);
        }
        else {
            cin >> z;
            update(cur, -z);
        }
    }
}

原文地址:https://www.cnblogs.com/czy-power/p/10357659.html

时间: 2024-10-13 23:45:43

清点人数的相关文章

#10116 「一本通 4.1 练习 1」清点人数

1538:清点人数 时间限制: 200 ms         内存限制: 524288 KB提交数: 920     通过数: 204 [题目描述] NK 中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去.由于 NK 中学的学生很多,在火车开之前必须清点好人数. 初始时,火车上没有学生.当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能有同学上下.年级主任走到第 mm 节车厢时,他想知道前 mm 节车厢上一共有多少学生,但是他没有调头往回走的习惯.也

Vijos 1320 清点人数

背景 NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去.由于NK中学的学生很多,在火车开之前必须清点好人数. 描述 初始时,火车上没有学生:当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能有同学上下.年级主任走到第m节车厢时,他想知道第1到m这m节车厢上一共有多少学生,但是他没有调头往回走的习惯.也就是说每次当他提问时,m总会比前一次大. 格式 输入格式 第一行两个整数n,k,表示火车共有n节车厢以及k个事件.接下来有k行,按时间先后给出k个事

吉林市一日游

吉林市一日游 出游目的: 为加强16级计算机技术班级团体凝聚力,加深革命友谊,在5年10年之后还能记得研究生阶段的互相伤害,故组织一次团体活动,吉林市一日游!!(此处应该有掌声) 吉林市简介: 吉林市原名"吉林乌拉"(满语),意思为沿江的城市,自然景观得天独厚,有"北国江城之称", 吉林市的整个辖区地处长白山和松辽平原的过渡地带,远望长白山,近绕松花江, 境内旅游资源得天独厚,早在清朝时期,其境内的团山双峙.龙潭印月.德碑夕照.药寺晚钟.松江渔火.八卦孤悬.猴石凌云

BNUOJ34980方(芳)格(哥)取数(好坑)

方(芳)格(哥)取数 Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Main Prev Submit Status Statistics Discuss Next Font Size:  +   - Type:   None Graph Theory      2-SAT     Articulation/Bridge/Biconnected Compon

【Aguin】第二周 5.24-5.30

5.24 2015百度之星资格赛 1003 IP聚合 水.数据小.暴解即可. STL依赖症.set需重载<  Aguin 2015百度之星资格赛 1004 放盘子博弈.我觉得用我的脑子应该是想不到的.但是它把方法写在Hint里了. 由于图形对称.只要能放就是必胜.否则必败.  Aguin 2015百度之星资格赛 1005 下棋 看讨论里有人找规律.可惜对这种东西一向不怎么敏感阿. 老老实实两边BFS. 分别两张地图上.针对每个格子.找出老头和马能走到该格子的最短时间. 倘若老头能在t走到某格子(

hihocode 九十七周 中国剩余定理

题目1 : 数论六·模线性方程组 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:今天我听到一个挺有意思的故事! 小Hi:什么故事啊? 小Ho:说秦末,刘邦的将军韩信带领1500名士兵经历了一场战斗,战死四百余人.韩信为了清点人数让士兵站成三人一排,多出来两人:站成五人一排,多出来四人:站成七人一排,多出来六人.韩信立刻就知道了剩余人数为1049人. 小Hi:韩信点兵嘛,这个故事很有名的. 小Ho:我觉得这里面一定有什么巧妙的计算方法!不然韩信不可能这么快计

模线性方程组

#1303 : 数论六·模线性方程组 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:今天我听到一个挺有意思的故事! 小Hi:什么故事啊? 小Ho:说秦末,刘邦的将军韩信带领1500名士兵经历了一场战斗,战死四百余人.韩信为了清点人数让士兵站成三人一排,多出来两人:站成五人一排,多出来四人:站成七人一排,多出来六人.韩信立刻就知道了剩余人数为1049人. 小Hi:韩信点兵嘛,这个故事很有名的. 小Ho:我觉得这里面一定有什么巧妙的计算方法!不然韩信不可能这么

设计模式之6大原则

好久没有更新博客了,一个自己这段时间忙于项目:另外一个原因就是自己这段时间干了一件美满的事情,找到了人生的另一半(虽然现在还是女朋友阶段):但是我还是希望能够有足够的时间.心情能够将自己这段时间的一些收获用文字的形式记录下来: 说到设计模式,其实大家都不陌生,应该说都是非常熟悉的.因为在项目里面都会不知不觉的用到它们,我想最耳熟能详的单例模式,大家应该都是熟悉的“不要不要”的吧.但是如果我问你,在设计模式里面有6条最基本的设计原则,你知道是哪些吗? 单一职责原则,这条原则大家望文生义就应该知道它

设计模式————6大设计原则

一. 6大设计模式 Single Responsibility Principle : 单一职责原则 Liskov Substitution Principle     : 里氏替换原则 Dependence Inversion Principle :依赖倒置原则 Interface Segregation Principle  : 接口隔离原则 Law of Demeter           : 迪米特法则 Open Closed Principle               : 开闭原则