• <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>

            superman

            聚精會神搞建設 一心一意謀發(fā)展
            posts - 190, comments - 17, trackbacks - 0, articles - 0
               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            ZOJ 1117 - Entropy

            Posted on 2008-04-11 17:00 superman 閱讀(285) 評論(0)  編輯 收藏 引用 所屬分類: ZOJ
             1 /* Accepted 1117 C++ 00:00.00 840K */
             2 #include <string>
             3 #include <limits.h>
             4 #include <iostream>
             5 
             6 using namespace std;
             7 
             8 int cnt[27], len, ans;
             9 
            10 struct
            11 {
            12     int w;
            13     int left, right;
            14     bool used;
            15 }Tree[100];
            16 
            17 void InOrder(int p, int n)
            18 {
            19     if(Tree[p].left)
            20         InOrder(Tree[p].left, n + 1);
            21     if(Tree[p].right)
            22         InOrder(Tree[p].right, n + 1);
            23     if(Tree[p].left == 0 && Tree[p].right == 0)
            24         ans += Tree[p].w * n;
            25 }
            26 
            27 int main()
            28 {
            29     cout.setf(ios_base::showpoint);
            30     cout.setf(ios_base::fixed);
            31     cout.precision(1);
            32     
            33     string s;
            34     while(cin >> s && s != "END")
            35     {
            36         memset(cnt, 0sizeof(cnt));
            37         for(int i = 0; i < s.size(); i++)
            38             if(s[i] == '_')
            39                 cnt[0]++;
            40             else
            41                 cnt[s[i] - 'A' + 1]++;
            42         
            43         len = 0;
            44         for(int i = 0; i < 27; i++)
            45             if(cnt[i])
            46             {
            47                 len++;
            48                 Tree[len].w = cnt[i];
            49                 Tree[len].left = Tree[len].right = 0;
            50                 Tree[len].used = false;
            51             }
            52         
            53         while(true)
            54         {
            55             int m1 = INT_MAX, m2 = INT_MAX, idx1, idx2;
            56             
            57             for(int i = 1; i <= len; i++)
            58                 if(Tree[i].used == false)
            59                     if(m1 > Tree[i].w)
            60                     {
            61                         m1 = Tree[i].w;
            62                         idx1 = i;
            63                     }
            64             if(m1 == INT_MAX) break;
            65             Tree[idx1].used = true;
            66             
            67             for(int i = 1; i <= len; i++)
            68                 if(Tree[i].used == false)
            69                     if(m2 > Tree[i].w)
            70                     {
            71                         m2 = Tree[i].w;
            72                         idx2 = i;
            73                     }
            74             if(m2 == INT_MAX) break;
            75             Tree[idx2].used = true;
            76 
            77             len++;
            78             Tree[len].w = m1 + m2;
            79             Tree[len].left = idx1;
            80             Tree[len].right = idx2;
            81             Tree[len].used = false;
            82         }
            83         
            84         if(len == 1)
            85             ans = s.size();
            86         else
            87         {
            88             ans = 0;
            89             InOrder(len, 0);
            90         }
            91         
            92         cout << 8 * s.size() << ' ' << ans << ' '
            93              << double(8 * s.size()) / ans << endl;
            94     }
            95     
            96     return 0;
            97 }
            98 
            久久久久久久精品成人热色戒| 漂亮人妻被黑人久久精品| 久久99国产精品久久99果冻传媒| 久久福利青草精品资源站免费 | 武侠古典久久婷婷狼人伊人| 久久性生大片免费观看性| 日韩欧美亚洲综合久久| 久久精品国产亚洲av日韩| 久久久艹| 久久777国产线看观看精品| 亚洲&#228;v永久无码精品天堂久久 | 香蕉久久永久视频| 久久综合狠狠综合久久激情 | 久久久亚洲欧洲日产国码二区| 国产—久久香蕉国产线看观看| 99久久99久久精品国产片果冻| 伊人久久大香线焦综合四虎 | 国产亚洲精久久久久久无码AV| 伊人久久大香线蕉综合影院首页| 九九久久精品国产| 91久久婷婷国产综合精品青草| 亚洲精品NV久久久久久久久久| 久久精品国产69国产精品亚洲 | 欧美日韩中文字幕久久伊人| 久久天堂AV综合合色蜜桃网| 色狠狠久久综合网| 久久精品国产一区二区三区| 99久久久国产精品免费无卡顿 | 久久精品国产亚洲沈樵| 97精品依人久久久大香线蕉97| 亚洲国产成人精品91久久久| 久久久网中文字幕| 久久99精品久久久久久9蜜桃| 久久天堂电影网| 青青青国产精品国产精品久久久久| 国产V亚洲V天堂无码久久久| 久久久久久国产精品免费无码 | 香蕉久久永久视频| 伊人色综合九久久天天蜜桃| 久久人人爽人人人人片av| 精品久久久久久久国产潘金莲|