清点人数
Posted liuzz-20180701
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清点人数相关的知识,希望对你有一定的参考价值。
题目描述
思路
用一个数组记录lowbit的值
代码
#include <stdio.h>
#include <string.h>
int n, k;
char st;
int arr[500005], lowbit[500005];
void update(int x, int y)
while (x <= n)
arr[x] += y;
x += lowbit[x];
int sum(int x)
int res = 0;
while (x)
res += arr[x];
x -= lowbit[x];
return res;
int main()
scanf("%d %d\n", &n, &k);
for (int i = 1; i <= n; ++i)
lowbit[i] = i & (-i);
for (int i = 1, a, b; i <= k; ++i)
st = getchar();
// putchar(st);
if (st == 'A')
scanf("%d\n", &a);
printf("%d\n", sum(a));
else if (st == 'B')
scanf("%d %d\n", &a, &b);
update(a, b);
else
scanf("%d %d\n", &a, &b);
update(a, -b);
return 0;
以上是关于清点人数的主要内容,如果未能解决你的问题,请参考以下文章