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

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

            ZOJ 1117 - Entropy

            Posted on 2008-04-11 17:00 superman 閱讀(288) 評論(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久久久久久董美香| 久久精品无码一区二区三区日韩 | 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 久久精品aⅴ无码中文字字幕重口| 久久人人添人人爽添人人片牛牛 | 久久精品人妻一区二区三区| 国产精品永久久久久久久久久| 91精品国产色综久久| 曰曰摸天天摸人人看久久久| 精品久久一区二区三区| 99久久精品国产一区二区蜜芽| 色综合久久综合网观看| 国产真实乱对白精彩久久| 欧美与黑人午夜性猛交久久久| 无码人妻少妇久久中文字幕| 一本久道久久综合狠狠躁AV| 少妇高潮惨叫久久久久久| 韩国免费A级毛片久久| 99久久精品国产综合一区| 久久只有这精品99| 久久精品国产亚洲AV无码娇色 | 国产精品久久久久久福利69堂| 久久精品国产99国产电影网 | 欧美一级久久久久久久大片| 香蕉久久夜色精品国产尤物| 久久Av无码精品人妻系列| 久久精品国产99国产精品| 精品国产青草久久久久福利| 国产精品美女久久久m| 久久天天躁狠狠躁夜夜2020| 九九久久自然熟的香蕉图片| 久久久久久国产精品无码下载| 久久久久久久久波多野高潮| 久久精品国产99国产精偷| 久久伊人五月丁香狠狠色| 日本免费久久久久久久网站| 久久99久国产麻精品66| 久久99精品国产麻豆婷婷| 久久精品毛片免费观看| 精品久久久久成人码免费动漫|