• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            M.J的blog

            algorithm,ACM-ICPC
            隨筆 - 39, 文章 - 11, 評(píng)論 - 20, 引用 - 0
            數(shù)據(jù)加載中……

            POJ.2481 Cows【樹狀數(shù)組】

            今天聯(lián)系樹狀數(shù)組,但是我發(fā)現(xiàn)我真的很笨,做了好幾道了還是不熟。這個(gè)題和前邊的也沒什么分別,是說每個(gè)牛有一個(gè)區(qū)間[s,e],兩個(gè)牛[s1,e1], [s2,e2],當(dāng)s1<=s2并且e1>=e2并且e1-s1>e2-s2時(shí),我們說牛1比牛2強(qiáng),給N個(gè)牛的區(qū)間,對(duì)于每個(gè)牛,輸出比這個(gè)牛強(qiáng)的牛的個(gè)數(shù)。
            還是需要預(yù)處理,先對(duì)每個(gè)牛的e進(jìn)行降序排序,e相同時(shí)對(duì)s進(jìn)行升序排列,這樣循環(huán)時(shí)可以保證后邊的牛絕對(duì)不比前邊的牛強(qiáng)。在循環(huán)時(shí),只需找出比當(dāng)前牛s小的牛的個(gè)數(shù)。如果遇到特殊情況,即兩個(gè)牛區(qū)間完全一樣,賦值就可以了。哎,加油吧~
            Code:
             1 #include<iostream>
             2 #include<algorithm>
             3 #include<map>
             4 #define MAX 100002                   
             5 using namespace std;
             6 int c[MAX],ans[MAX],n,imax;
             7 struct cow
             8 {
             9     int l,r,id;
            10 }a[MAX];                          
            11 bool cmp(cow a,cow b){                
            12     if(a.r==b.r)                          //如果兩個(gè)牛區(qū)間右邊界相同,按左邊界的升序排列
            13         return a.l<b.l;  
            14     return a.r>b.r;                       //按右邊界的降序排列
            15 }
            16 int lowbit(int t){
            17     return t&(t^(t-1));
            18 }
            19 int sum(int t){
            20     int total=0;
            21     while(t>0){
            22         total+=c[t];
            23         t-=lowbit(t);
            24     }
            25     return total;
            26 }
            27 void modify(int posi,int key){
            28     while(posi<=imax){
            29         c[posi]+=key;
            30         posi+=lowbit(posi);
            31     }
            32 }
            33 int main()
            34 {
            35     int i,j,k,n;
            36     while(scanf("%d",&n),n){
            37         memset(c,0,sizeof(c));
            38         imax=0;
            39         for(i=1;i<=n;i++){
            40             scanf("%d%d",&a[i].l,&a[i].r);
            41             a[i].id=i;                                    //每個(gè)牛有個(gè)id防止排序完順序變亂
            42             ++a[i].l; ++a[i].r;
            43             if(imax<a[i].l) imax=a[i].l;                 //用imax表示右邊界最大值,即求和時(shí)的邊界
            44         }
            45         sort(a+1,a+n+1,cmp);
            46         for(i=1;i<=n;++i){
            47             if(i==1){
            48                 ans[a[i].id]=sum(a[i].l);              //這里注意是ans[a[i].id]而不是ans[i]
            49                 modify(a[i].l,1);
            50             }
            51             else{
            52                 if(a[i].l==a[i-1].l&&a[i].r==a[i-1].r) //如果兩個(gè)牛完全相同,直接賦值
            53                     ans[a[i].id]=ans[a[i-1].id];
            54                 else
            55                     ans[a[i].id]=sum(a[i].l);         //否則找出左邊界l比這個(gè)牛小的
            56                 modify(a[i].l,1);
            57             }
            58         }
            59         for(i=1;i<n;++i)
            60             printf("%d ",ans[i]);
            61         printf("%d\n",ans[i]);
            62     }
            63 }
            64 

            posted on 2010-05-03 17:12 M.J 閱讀(91) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            日产精品久久久一区二区| 国产精品综合久久第一页| 久久久久久国产精品无码下载| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久男人中文字幕资源站| 性做久久久久久久久老女人| 亚洲午夜久久久久久噜噜噜| 日本久久久久久中文字幕| 亚洲午夜福利精品久久| 久久精品国产亚洲AV无码麻豆| 国产精品99久久久久久猫咪| 伊人久久一区二区三区无码| 久久久久久精品无码人妻| 狠狠色婷婷综合天天久久丁香| 久久久久亚洲av成人无码电影| 久久久久亚洲av无码专区喷水| 久久久久一级精品亚洲国产成人综合AV区| 一本色道久久88综合日韩精品| 996久久国产精品线观看| 久久综合视频网| 精品久久国产一区二区三区香蕉| 亚洲精品乱码久久久久66| 老司机午夜网站国内精品久久久久久久久| 久久青青草原精品国产| 久久成人小视频| 久久国产成人| 天天爽天天爽天天片a久久网| 亚洲综合伊人久久综合| 一级女性全黄久久生活片免费| 久久久久久久亚洲精品 | 99精品久久久久久久婷婷| 国产精品成人无码久久久久久| 精品无码久久久久国产| 色88久久久久高潮综合影院| 久久亚洲国产成人影院| 亚洲va久久久久| 久久综合鬼色88久久精品综合自在自线噜噜 | 日韩亚洲欧美久久久www综合网| 99re久久精品国产首页2020| 久久精品国产亚洲77777| 亚洲综合日韩久久成人AV|