• <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 閱讀(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 
            一本一本久久a久久精品综合麻豆| 亚洲AV成人无码久久精品老人| 亚洲欧美精品伊人久久| 国产精品成人久久久久久久| 日韩一区二区三区视频久久| 久久综合久久美利坚合众国| 成人久久精品一区二区三区| 久久免费观看视频| 国产综合久久久久| 无码8090精品久久一区| 精品久久久久久国产91| 国产精品美女久久福利网站| 久久美女人爽女人爽| 亚洲伊人久久大香线蕉综合图片| 久久精品国产半推半就| 狠狠色婷婷久久综合频道日韩 | 色诱久久av| 久久精品国产亚洲AV香蕉| 欧美激情精品久久久久久久九九九| 精品无码久久久久久午夜| 九九精品久久久久久噜噜| 国内精品久久久久久久coent| 国内精品久久久久影院薰衣草 | 亚洲一区二区三区日本久久九| 99久久综合国产精品免费| 国产真实乱对白精彩久久| WWW婷婷AV久久久影片| 久久精品中文无码资源站| 蜜臀久久99精品久久久久久 | 一本色道久久综合狠狠躁| 伊人久久大香线蕉无码麻豆 | 欧美久久综合九色综合| 国内精品久久久久久中文字幕| 久久精品成人国产午夜| 俺来也俺去啦久久综合网| 国产成人精品白浆久久69| 久久精品aⅴ无码中文字字幕不卡| 久久99精品久久久久久动态图| 久久久久国产精品熟女影院 | 国产成年无码久久久久毛片| 国产亚洲婷婷香蕉久久精品|