HDU 1541

来源:互联网 发布:羊毛毡 淘宝网 编辑:程序博客网 时间:2024/06/05 12:46

树状数组的应用,只是利用的它向后更新,向前查询的性质。


#include <stdio.h>#include <string.h>#define LEN 150001int tree[LEN];int level[LEN];int lowbit(int x) {    return x & (-x);    }void update(int pos) {    while(pos <= LEN) {        tree[pos] ++;        pos += lowbit(pos);    }}int query(int pos) {    int sum = 0;    while(pos > 0) {        sum += tree[pos];        pos -= lowbit(pos);    }    return sum;}int main() {    int num;    while(scanf("%d", &num) != EOF) {        int x, y;        int i, j;        memset(level, 0, sizeof(level));        memset(tree, 0, sizeof(tree));        for(i = 1; i <= num; i++) {            scanf("%d%d", &x, &y);            level[query(++x)]++;            update(x);        }        for(i = 0; i < num; i++) {            printf("%d\n", level[i]);        }    }    return 0;}


原创粉丝点击