<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      書山有徑勤為路>>>>>>>>

      <<<<<<<<學(xué)海無涯苦作舟!

      Huffman和Priority_queue 解決POJ 3253

      Description

      Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length Li (1 ≤ Li ≤ 50,000) units. He then purchases a single long board just long enough to saw into the N planks (i.e., whose length is the sum of the lengths Li). FJ is ignoring the "kerf", the extra length lost to sawdust when a sawcut is made; you should ignore it, too.

      FJ sadly realizes that he doesn't own a saw with which to cut the wood, so he mosies over to Farmer Don's Farm with this long board and politely asks if he may borrow a saw.

      Farmer Don, a closet capitalist, doesn't lend FJ a saw but instead offers to charge Farmer John for each of the N-1 cuts in the plank. The charge to cut a piece of wood is exactly equal to its length. Cutting a plank of length 21 costs 21 cents.

      Farmer Don then lets Farmer John decide the order and locations to cut the plank. Help Farmer John determine the minimum amount of money he can spend to create the N planks. FJ knows that he can cut the board in various different orders which will result in different charges since the resulting intermediate planks are of different lengths.

      Input

      Line 1: One integer N, the number of planks 
      Lines 2..N+1: Each line contains a single integer describing the length of a needed plank

      Output

      Line 1: One integer: the minimum amount of money he must spend to make N-1 cuts

      Sample Input

      3
      8
      5
      8

      Sample Output

      34
      
      
       
      
      
      使用優(yōu)先隊(duì)列每次選擇隊(duì)頭的兩個(gè)數(shù)并將其出列,
      
      
      相加后將結(jié)果放入隊(duì)列中,直到隊(duì)列為空為止.
      
      
      上面這句話,道出了哈夫曼算法的真諦了。
      View Code
      #include<iostream>
      #include<queue>
      using namespace std;
      const int Max = 20005;
      
      typedef struct node{
          long long value;
          bool operator < (const node &a) const{
              return value > a.value;
          }
      }node;
      node tmp;
      
      int main()
      {
          int n, i;
          scanf("%d", &n);
          priority_queue<node> que;
          for(i = 0; i < n; i ++){
              scanf("%d", &tmp.value);
              que.push(tmp);   
          }
          long long ans = 0;     //  數(shù)值大小的判斷要清楚,別不小心又WA。
          while(que.size() > 1){
              int a, b;
              a = que.top().value; que.pop();
              b = que.top().value; que.pop();
              tmp.value = a + b;
              que.push(tmp);  //將最優(yōu)解再次放入隊(duì)列中,尋找下一個(gè)最優(yōu)解
              ans += tmp.value;
          }
          cout<<ans<<endl;
          return 0;
      }

       

      
      
      //經(jīng)過que.push(tmp)之后的排列順序?yàn)?//5
      //8
      //8
      //沒想到就用一個(gè)優(yōu)先隊(duì)列就將哈夫曼樹給實(shí)現(xiàn)了
      //這個(gè)從來沒有想到過,牛人呀。
      //但是我總覺得,這道題目并沒有將哈夫曼樹的
      //作用以發(fā)揮到極點(diǎn)。還會(huì)有后戲的。
       
       
      還有一個(gè)不用結(jié)構(gòu)體來用優(yōu)先隊(duì)列的方法,但是效率上好像要差一些。
      View Code
      #include <iostream>  
      #include <queue>  
      using namespace std;  
      int main()
      {  
          int n;  
          priority_queue<int,vector<int>,greater<int> > qu;  //就是這句話了
          while(cin>>n)
          {  
              while(n--)
              {  
                  int x;  
                  cin>>x;  
                  qu.push(x);  
              }  
              int a=0,b=0;  
              long long res=0;  
              while(qu.size()>1)
              {  
                  a=qu.top();  
                  qu.pop();  
                  b=qu.top();  
                  qu.pop();  
                  res+=a+b;  
                  qu.push(a+b) ;  
              }   
              cout<<res<<endl;   
          }  
          return 0;  
      }   

       

       

      posted on 2011-09-25 11:41  More study needed.  閱讀(225)  評(píng)論(0)    收藏  舉報(bào)

      導(dǎo)航

      書山有徑勤為路>>>>>>>>

      <<<<<<<<學(xué)海無涯苦作舟!

      主站蜘蛛池模板: 亚洲午夜无码av毛片久久| 湖口县| 成人区精品一区二区不卡| 成人网站免费观看永久视频下载| 亚洲综合一区二区三区视频 | 亚洲码国产精品高潮在线| 把腿张开ji巴cao死你h| 熟女一区| 中文幕无线码中文字夫妻| 精品国产综合一区二区三区 | 亚洲av男人电影天堂热app| 国产精品视频一区不卡| 国产成人精选视频在线观看不卡| 精品午夜福利在线视在亚洲| 国产精品久久久久久影视| 日韩人妻少妇一区二区三区| 成人做爰视频www| 老鸭窝| 亚洲另类激情专区小说图片| 成人3D动漫一区二区三区| 皮山县| japanese无码中文字幕| 操操操综合网| 人妻无码中文字幕| 亚洲精品一区二区三区片| 亚洲不卡av不卡一区二区| 日本高清中文字幕免费一区二区| 日韩精品国产另类专区| 亚洲AV无码久久精品成人| 亚洲午夜伦费影视在线观看| 边添小泬边狠狠躁视频| 国产成人高清亚洲一区二区| 中文字幕有码高清日韩| 精品日韩亚洲AV无码| 四虎国产精品成人免费久久| 国产成人a在线观看视频| 日本无码欧美一区精品久久| 原平市| 久久精品国产99久久久古代| av偷拍亚洲一区二区三区| 亚洲2区3区4区产品乱码2021|