清点人数

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;

以上是关于清点人数的主要内容,如果未能解决你的问题,请参考以下文章

清点人数

清点人数

Vijos 1320 清点人数

vijos 1320 清点人数

韩信点兵 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排五人一排七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾

开源项目推荐一款万能清点工具renxianqi人贤齐重磅发布!