国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

HDU - 1556 樹狀數組(區間修改+單點更新)

2019-11-11 06:12:46
字體:
來源:轉載
供稿:網友

題意:

n個數,初始化為0,每次給一段區間的數+1,最后輸出n個數。

思路:

樹狀數組區間修改+單點查詢的入門題,每次更新區間[l,r]的時候,給區間左端點l處+1,右端點后一個r+1處減1,這樣,最后求i位置的值,只要從左往右求一遍前綴和,小于l的位置都沒有增量,l到r之間會有增量1,r之后+1,-1相互抵消也沒有增量。

代碼:

#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 10;int n;int bit[MAXN];int lowbit(int x) {    return x & -x;}void add(int x, int y) {    while (x <= n) {        bit[x] += y;        x += lowbit(x);    }}int sum(int x) {    int res = 0;    while (x) {        res += bit[x];        x -= lowbit(x);    }    return res;}int main() {    while (scanf("%d", &n), n) {        for (int i = 1; i <= n; i++) bit[i] = 0;        for (int i = 1; i <= n; i++) {            int l, r;            scanf("%d%d", &l, &r);            add(l, 1); add(r + 1, -1);        }        for (int i = 1; i <= n; i++)            PRintf("%d%c", sum(i), i == n ? '/n' : ' ');    }    return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 波密县| 仙游县| 呼玛县| 龙里县| 嘉义市| 玛多县| 蒙自县| 安化县| 肥东县| 石棉县| 望都县| 渝中区| 怀远县| 义乌市| 黄陵县| 上林县| 龙州县| 太和县| 木里| 阳山县| 双鸭山市| 林甸县| 潞西市| 福泉市| 长阳| 昆明市| 定西市| 灵丘县| 邳州市| 巨野县| 西乌珠穆沁旗| 安福县| 盱眙县| 河东区| 玛纳斯县| 周宁县| 扎囊县| 卓资县| 南城县| 南京市| 都兰县|