• <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 閱讀(296) 評論(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 
            91精品国产91久久久久久| 色欲久久久天天天综合网精品 | 青青草国产精品久久久久| 久久国产精品一区二区| 国产精品久久久天天影视香蕉 | 久久只这里是精品66| 久久免费的精品国产V∧ | 国产精品久久久久久福利69堂| 久久久久四虎国产精品| 色青青草原桃花久久综合| 77777亚洲午夜久久多喷| 久久一区二区三区99| 久久精品人人做人人妻人人玩| 国产呻吟久久久久久久92| 日本强好片久久久久久AAA | 91精品观看91久久久久久 | 99久久无色码中文字幕| 亚洲国产成人精品女人久久久| 久久中文骚妇内射| 伊人久久大香线蕉精品不卡| 久久91这里精品国产2020| 无码国产69精品久久久久网站| 久久久久亚洲精品无码网址 | 99久久无码一区人妻a黑| 伊人久久大香线蕉综合网站| 久久精品国产国产精品四凭| 国产成人久久AV免费| 97精品国产97久久久久久免费| 久久久久国色AV免费看图片| 91久久精品视频| 99精品久久久久久久婷婷| 久久99久久99精品免视看动漫| 久久精品国产色蜜蜜麻豆| 亚洲第一永久AV网站久久精品男人的天堂AV | 日本国产精品久久| 久久久久久极精品久久久| 久久av免费天堂小草播放| 久久精品国产99国产精品澳门| 久久精品水蜜桃av综合天堂| 久久成人国产精品免费软件| 天天综合久久一二三区|