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

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

            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 
            久久国产精品-久久精品| 久久久久久亚洲精品不卡| 久久久久久精品成人免费图片| 亚洲人成无码www久久久| 国产A三级久久精品| 97超级碰碰碰久久久久| 欧美色综合久久久久久| 久久偷看各类wc女厕嘘嘘| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 蜜臀久久99精品久久久久久小说| 久久国产精品77777| 日批日出水久久亚洲精品tv| 久久精品aⅴ无码中文字字幕重口| 亚洲国产天堂久久综合网站 | 精品综合久久久久久888蜜芽| 青青草原综合久久| 久久综合久久综合亚洲| 97久久精品人人澡人人爽| 国产美女亚洲精品久久久综合| 91精品国产91久久| 久久久久久国产精品无码超碰| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 狠狠色丁香婷综合久久| 久久久久久久久久久久久久 | 久久91这里精品国产2020| 无遮挡粉嫩小泬久久久久久久 | AV色综合久久天堂AV色综合在| 亚洲国产成人久久一区久久| AV狠狠色丁香婷婷综合久久 | 丰满少妇高潮惨叫久久久| 99久久综合国产精品免费| 久久久久国产成人精品亚洲午夜| 久久99国产精一区二区三区| 色88久久久久高潮综合影院| 综合人妻久久一区二区精品| 久久久无码精品亚洲日韩京东传媒 | 中文精品久久久久人妻不卡| 久久久国产亚洲精品| 中文字幕无码久久久| 久久婷婷国产剧情内射白浆| 久久精品aⅴ无码中文字字幕不卡|