• <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>
            隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
            數(shù)據(jù)加載中……

            PKU 3067 Japan

            題目鏈接:http://poj.org/problem?id=3067
            /*
            題意:
                左邊N個點(diǎn),右邊M個點(diǎn),分別南北方向排列,1對應(yīng)1,2對應(yīng)2,給出
            K條記錄,每條記錄表示左邊的A點(diǎn)和右邊的B點(diǎn)相連,兩條相連的先會有一
            個交點(diǎn),現(xiàn)在保證任意三個線不會交與一點(diǎn),問一共多少個交點(diǎn)。

            題解:
                樹狀數(shù)組

            思路:
                題目求的是交點(diǎn)的數(shù)目,仔細(xì)觀察就可以發(fā)現(xiàn),如果有以下四個點(diǎn),A1
            ,B1屬于左邊,A2,B2屬于右邊,當(dāng)且僅當(dāng) A1和A2的大小關(guān)系 和 B1與B2
            的大小關(guān)系 相反,于是可以聯(lián)想到求一個數(shù)列的逆序數(shù)的時(shí)候用到的樹狀數(shù)
            組的成段求和。
                我們只要將讀入的整數(shù)對按左邊的點(diǎn)遞增排序,如果左邊點(diǎn)大小相同則按
            右邊點(diǎn)遞增排序,每次在樹狀數(shù)組中統(tǒng)計(jì)比當(dāng)前右邊的點(diǎn)大的數(shù)的數(shù)目,然后
            再將這個點(diǎn)插入樹狀數(shù)組,這就實(shí)現(xiàn)了一個逆序統(tǒng)計(jì)。
                這里需要注意的是,統(tǒng)計(jì)的時(shí)候需要采用__int64,因?yàn)榭偟慕稽c(diǎn)數(shù)可能
            會超過int。最大的情況是左右兩邊都是1000個點(diǎn),并且兩兩有邊,那么最大
            的交點(diǎn)數(shù)量就是:
            1 * (1 + 2 +  + 999)
            +
            2 * (1 + 2 +  + 998)
            +

            998 * (1 + 2)
            +
            999 * 1
            +
            1000 * 0
                可以寫個程序統(tǒng)計(jì)一下,發(fā)現(xiàn)這個數(shù)字是超過int的。
                ll ans = 0;
                for(i = 1; i <= 1000; i++) {
                    ans += i * (1001 - i) * (1000 - i) / 2;
                }
            */



            #include 
            <iostream>
            #include 
            <algorithm>

            using namespace std;

            struct Double {
                
            int l, r;
            }
            dt[1000100];

            int N, M, K;
            #define ll __int64

            int cmp(Double a, Double b) {
                
            if(a.l == b.l)
                    
            return a.r < b.r;
                
            return a.l < b.l;
            }


            int lowbit(int x) {
                
            return x & (-x);
            }


            ll c[
            1010];
            void add(int pos) {
                
            while(pos <= M) {
                    c[pos] 
            ++;
                    pos 
            += lowbit(pos);
                }

            }


            ll sum(
            int pos) {
                ll s 
            = 0;
                
            while(pos > 0{
                    s 
            += c[pos];
                    pos 
            -= lowbit(pos);
                }

                
            return s;
            }


            int main() {
                
            int t;
                
            int i;
                
            int Case = 1;




                scanf(
            "%d"&t);

                
            while(t--{
                    memset(c, 
            0sizeof(c));
                    scanf(
            "%d %d %d"&N, &M, &K);
                    
            for(i = 0; i < K; i++{
                        scanf(
            "%d %d"&dt[i].l, &dt[i].r);
                    }

                    sort(dt, dt 
            + K, cmp);

                    ll ans 
            = 0;
                    
            for(i = 0; i < K; i++{
                        ans 
            += sum(M) - sum(dt[i].r);
                        add(dt[i].r);
                    }

                    printf(
            "Test case %d: %I64d\n", Case++, ans);
                }

                
            return 0;
            }


            posted on 2011-04-08 23:14 英雄哪里出來 閱讀(1108) 評論(0)  編輯 收藏 引用 所屬分類: 樹狀數(shù)組

            婷婷久久综合九色综合九七| 亚洲AV无码久久精品蜜桃| 久久久久久人妻无码| 中文字幕乱码人妻无码久久| 久久人人爽人人爽人人AV东京热 | 性色欲网站人妻丰满中文久久不卡| 性做久久久久久久久| 久久久久99精品成人片直播| 久久久久免费精品国产| 无码乱码观看精品久久| 精品亚洲综合久久中文字幕| 人人狠狠综合88综合久久| 少妇人妻88久久中文字幕| 久久久久这里只有精品| 国产成人久久精品区一区二区| 久久久久国色AV免费看图片| 国产精品久久久久久久久免费 | 亚洲国产精品无码久久98| 国产福利电影一区二区三区,免费久久久久久久精 | 国产精品毛片久久久久久久| 无码8090精品久久一区| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 精品久久久久久久久久久久久久久| 久久久久久综合网天天| 久久99精品免费一区二区| 麻豆一区二区99久久久久| 亚洲人成电影网站久久| 久久人人超碰精品CAOPOREN| 亚洲综合精品香蕉久久网97| 久久精品国产亚洲AV电影 | 精品久久久久久国产91| 99久久超碰中文字幕伊人| 日韩精品久久久久久久电影蜜臀| 99久久综合国产精品免费| 亚洲第一永久AV网站久久精品男人的天堂AV| av无码久久久久久不卡网站| 久久精品中文字幕无码绿巨人| 无码精品久久久久久人妻中字| 思思久久好好热精品国产| 久久久久久久综合狠狠综合| 波多野结衣久久一区二区 |