水題:樹狀數(shù)組的巧妙運用

Color the ball
N個氣球排成一排科乎,從左到右依次編號為1,2,3....N.每次給定2個整數(shù)a b(a <= b),lele便為騎上他的“小飛鴿"牌電動車從氣球a開始到氣球b依次給每個氣球涂一次顏色。但是N次以后lele已經(jīng)忘記了第I個氣球已經(jīng)涂過幾次顏色了菌瘫,你能幫他算出每個氣球被涂過幾次顏色嗎?
題意很簡單慎颗,每次都有a到b的氣球加一蟋座,所以很快就寫出了代碼:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string.h>
#define MMAX 100005
using namespace std;
int C[MMAX];
void main()
{
    int i,j,n,m,k,l;
    while(scanf("%d",&n)&&n!=0)
    {
        memset(C,0,sizeof (C));
        for (i=0;i<n;i++)
        {
            scanf("%d%d",&k,&l);
            for(j=k;j<=l;j++)
                C[j]++;
        }
        for (i=1;i<=n;i++)
        {
            printf("%d",C[i]);
            if (i!=n)
                printf(" ");
        }
        printf("\n");
    }
}

不出所料,是超時的会钝,所以不得不做的是分析浪費時間的原因和相應(yīng)的解決方案。
遍歷輸出的方面是不能改的工三,因為每一次遍歷都需要輸出一位數(shù)顽素,那么浪費時間的主要步驟就是累加了,既然不能從a到b逐個加徒蟆,那么就應(yīng)該找一個方法盡量使該加法得到最簡化胁出。
真的是非常巧妙的運用,在做題時如果想不到可以直接使用線段樹段审,但是代碼不會如此精簡全蝶。
首先我們以數(shù)組A的每一個結(jié)點來代替一個氣球被染色的次數(shù):


如圖,便是最開始的思想了寺枉,那么又該如何優(yōu)化呢抑淫?同時,又該怎樣運用到求和當中去呢姥闪?可以如此處理:

這樣始苇,只在起始位置加上一個單位,那么如果要輸出的是第五個氣球筐喳,除了第三個以外都是零催式,那么就是1了,需要注意的是避归,每次染色都是在一個范圍 內(nèi)的荣月,為了避免之后的氣球在累加的時候也會數(shù)目增多,如圖梳毙,假設(shè)染色范圍是(3哺窄,6),那么账锹,只需要在6+1個氣球處減1即可:


不妨多舉幾個例子驗證一下萌业,把前n項求和,得到的便是第n個氣球的染色次數(shù)奸柬。

#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;

int c[100010];
int n;
int lowbit(int x){
    return x&-x;
}

void modify(int pos,int val){
    while(pos<=n){//n-->b;
        c[pos]+=val;
        pos+=lowbit(pos);
    }
}

int getr(int pos){
    int sum=0;
    while(pos>0){
        sum+=c[pos];
        pos-=lowbit(pos);
    }
    return sum;
}
int main(){
    int a,b,i;
    while(cin>>n,n){
        memset(c,0, sizeof(c));
        for(i=0;i<n;i++){
            scanf("%d%d",&a,&b);
            modify(a,1);
            modify(b+1, -1);
        }
        for( i=1;i<=n;i++){
            printf("%d%c",getr(i)," \n"[i==n]);
        }
    }
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末生年,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸟缕,更是在濱河造成了極大的恐慌晶框,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懂从,死亡現(xiàn)場離奇詭異授段,居然都是意外死亡,警方通過查閱死者的電腦和手機番甩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門侵贵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缘薛,你說我怎么就攤上這事窍育。” “怎么了宴胧?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵漱抓,是天一觀的道長。 經(jīng)常有香客問我恕齐,道長乞娄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任显歧,我火速辦了婚禮仪或,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘士骤。我一直安慰自己范删,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布拷肌。 她就那樣靜靜地躺著到旦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巨缘。 梳的紋絲不亂的頭發(fā)上厢绝,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音带猴,去河邊找鬼昔汉。 笑死,一個胖子當著我的面吹牛拴清,可吹牛的內(nèi)容都是我干的靶病。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼口予,長吁一口氣:“原來是場噩夢啊……” “哼娄周!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沪停,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煤辨,失蹤者是張志新(化名)和其女友劉穎裳涛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體众辨,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡端三,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹃彻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊闯。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛛株,靈堂內(nèi)的尸體忽然破棺而出团赁,到底是詐尸還是另有隱情,我是刑警寧澤谨履,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布欢摄,位于F島的核電站,受9級特大地震影響笋粟,放射性物質(zhì)發(fā)生泄漏剧浸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一矗钟、第九天 我趴在偏房一處隱蔽的房頂上張望唆香。 院中可真熱鬧,春花似錦吨艇、人聲如沸躬它。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冯吓。三九已至,卻和暖如春疮跑,著一層夾襖步出監(jiān)牢的瞬間组贺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工祖娘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留失尖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓渐苏,卻偏偏與公主長得像掀潮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琼富,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一仪吧、實驗?zāi)康?學(xué)習(xí)使用 weka 中的常用分類器,完成數(shù)據(jù)分類任務(wù)鞠眉。 二薯鼠、實驗內(nèi)容 了解 weka 中 explo...
    yigoh閱讀 8,528評論 5 4
  • 今年的三月出皇,夜總是那么的長羞芍,晚上我十一點睡覺,卻時常半夜醒來恶迈,再也沒有睡意涩金∑状迹渴望黎明的到來暇仲。 睡不著就睡不著吧,我...
    任小藝閱讀 220評論 0 1
  • 每當我翻開某些書籍的時候副渴,我感覺我真的如一粒微小的塵土奈附,如滄海一粟,有種卑微的可憐涌上心頭煮剧。我不斷從中地吮吸他們的...
    何處有嘉木閱讀 270評論 2 4
  • 有人說泰國斥滤,像一個近乎完美的女人。藍天白云勉盅,碧水白沙是她的婀娜多姿佑颇;宏偉的寺廟,虔誠的信仰是她的神秘...
    曌彣柝閱讀 222評論 1 0