青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

pku 2054

2009年6月14日 星期日

題目鏈接:
PKU 2054 Color a Tree

分類:一道漂亮的貪心(有點難度)


題目分析與算法模型

     本題是一個比較難想的貪心,我是沒想到這樣的貪心方法,是看別人的報告后寫的,暈,由于while循環退出條件的疏忽,貢獻了無數次TLE,淚奔.......好了不說廢話了,先看一下這道題是怎么個貪心法:

     這道題就是要求 Sigma( i * Ci ) (i = 1 .. n) 的值最小,{ Ci } 是節點費用的一個排列,同時要滿足父節點要出現在子節點前面。如果沒有父節點出現在子節點前面這個限制,那么答案很明顯。當{ Ci }按降序排列的時候,Sigma的值是最小的。當有這個限制的時候情況也是類似的。考慮某一個可行解,就是{ Ci }的某一個排列。找到其中的最大值,比如為Ck,它有一個父節點比如Cp。顯然Cp要出現在Ck之前。更進一步,Cp就應該出現在Ck的前一個位置。只有這樣才有可能Sigma的值最小。不然我們可以將Ck位置向前移動,得到一個更小的Sigma值,并且不破壞上面的約束。既然Cp就出現在Ck的前一個位置,那么它們其實就是連在一起的,可以最為一個整體來看。這樣問題的規模就有n減小到n-1。然后重復這一過程,直到所有的位置都確定下來。



算法流程:

1.        令所有節點S值均為1,每個節點生成序列中僅有一個元素,即為它本身。

2.        若樹中只剩一個結點,則輸出這個這個結點的生成序列。

3.        取出Ci/Si值最大的非根結點Max。

4.        將Max和其父親合并,新合并出的結點Union的各個參數為:Cunion=CMax+CPa(max),SUnion=SMax+SPa(Max),同時Union的生成序列為Pa(Max)的生成序列與Max的生成序列連接而成。

5.        重復2~4步。

注意:其實這題可以不用記錄結點先后的序列,設置一個全局變量res,在預處理時,res=所有節點的C的和,然后每合并兩個節點(編號為pos,其父節點為編號為f),那么res+=c[pos]*time[f],最后輸出res即可,至于為什么能這樣子,自己可以動腦筋思考一下         



Code:

 1#include<stdio.h>
 2#include<string.h>
 3#define max 1100
 4
 5int n,r,i,v1,v2,j,res,pos,f;
 6struct node
 7{
 8    int c,time,parent;
 9    double w;
10}
Node[max];
11
12int find()
13{
14    int i,m;
15    double Max=0;
16    for(i=1;i<=n;i++)
17        if(Node[i].w>Max&&i!=r)
18        {
19            Max=Node[i].w;
20            m=i;
21        }

22        return m;
23}

24
25int main()
26{
27    while(scanf("%d%d",&n,&r)!=EOF)
28    {
29        if(!n&&!r)break;
30        res=0;
31        for(i=1;i<=n;i++)
32        {
33            Node[i].time=1;
34            scanf("%d",&Node[i].c);
35            Node[i].w=Node[i].c;
36            res+=Node[i].c;
37        }

38        for(i=1;i<=n-1;i++)
39        {
40            scanf("%d%d",&v1,&v2);
41            Node[v2].parent=v1;
42        }

43        Node[r].parent=-1;
44        int count=n;
45        while(count>1)
46        {    
47            pos=find();
48            f=Node[pos].parent;
49            res+=Node[pos].c*Node[f].time;
50            for(j=1;j<=n;j++)
51                if(Node[j].parent==pos)Node[j].parent=f;
52            Node[pos].w=0;
53            Node[f].time+=Node[pos].time;
54            Node[f].c+=Node[pos].c;
55            Node[f].w=(double)Node[f].c/Node[f].time;
56            count--;
57        }

58        printf("%d\n",res);
59    }

60    return 0;
61}

62
63

posted on 2009-06-14 12:56 蝸牛也Coding 閱讀(1663) 評論(2)  編輯 收藏 引用

評論

# re: pku 2054 2009-08-01 15:57 cppftee

Node[f].time+=Node[pos].time;

這一行語句怎么理解呢?
為什么不是Node[f].time++;?  回復  更多評論   

# re: pku 2054 2009-08-01 16:07 cppftee

@cppftee
我想了一下
因為初始化的時間都是1了,而且是先找max,然后合并的···  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(8)

隨筆檔案(78)

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品美女久久久久| 亚洲免费在线电影| 午夜精品一区二区三区在线视| 亚洲女爱视频在线| 欧美影院视频| 亚洲欧洲综合另类| 99精品视频免费全部在线| 国产精品私房写真福利视频| 亚洲欧美视频在线观看| 鲁大师影院一区二区三区| 亚洲一区二区黄色| 老司机午夜精品视频在线观看| 日韩视频在线免费| 亚洲国产天堂久久综合| 国产乱肥老妇国产一区二| 久久成人人人人精品欧| 亚洲一区二区在线免费观看| 亚洲一区国产精品| 欧美色中文字幕| 亚洲免费成人| 99v久久综合狠狠综合久久| 久久一日本道色综合久久| 欧美精品在线网站| 亚洲精品小视频| 亚洲欧美日韩天堂| 国产伦一区二区三区色一情| 在线综合亚洲| 久久精品中文字幕免费mv| 亚洲国产一区在线观看| 欧美大片免费观看| 亚洲一区二区高清| 久久久久欧美| 在线看日韩欧美| 国产精品一区免费视频| 欧美国产日产韩国视频| 欧美亚洲三区| 亚洲精品欧美在线| 欧美日韩午夜激情| 久久精品亚洲精品国产欧美kt∨| 免费短视频成人日韩| 99视频有精品| 91久久久亚洲精品| 国内精品久久久| 欧美日韩免费看| 亚洲大黄网站| 国产在线精品一区二区夜色| 国产乱码精品一区二区三区av| 久久久成人精品| 久久激情五月丁香伊人| 性伦欧美刺激片在线观看| 99精品免费| 亚洲免费一在线| 久久经典综合| 中文av一区二区| 亚洲电影免费观看高清完整版在线| 精品动漫3d一区二区三区| 狠狠色伊人亚洲综合网站色| 国产精品久久中文| 欧美日韩亚洲国产精品| 亚洲欧美一区二区三区在线| 毛片精品免费在线观看| 久久久久国产一区二区三区四区| 久久国产精品一区二区三区| 你懂的国产精品| 亚洲人成人一区二区在线观看| 欧美电影电视剧在线观看| 亚洲精品日韩一| 午夜精品福利一区二区三区av| 噜噜噜躁狠狠躁狠狠精品视频| 欧美日本乱大交xxxxx| 艳女tv在线观看国产一区| 亚洲一区二区精品| 午夜在线电影亚洲一区| 国产亚洲a∨片在线观看| 欧美在线精品免播放器视频| 麻豆国产va免费精品高清在线| 亚洲裸体在线观看| 亚洲电影第三页| 欧美激情一区二区| 亚洲欧洲精品天堂一级| 午夜精品在线视频| 亚洲人成毛片在线播放女女| 国产精品久久久一区二区三区| 久久婷婷综合激情| 欧美日韩亚洲综合一区| 欧美激情亚洲一区| 136国产福利精品导航网址应用 | 亚洲视频每日更新| 欧美日一区二区在线观看| 欧美大片免费观看| 国产亚洲精品久久久| 亚洲国产另类精品专区 | 羞羞漫画18久久大片| 亚洲欧美激情诱惑| 亚洲一区二区精品视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲视频网在线直播| 美女图片一区二区| 久久精品亚洲精品| 久久夜色精品亚洲噜噜国产mv | 一二三区精品| 国产精品狼人久久影院观看方式| 亚洲午夜激情| 在线一区欧美| 国产精品一区二区三区久久| 久久av最新网址| 久久久久久国产精品mv| 91久久嫩草影院一区二区| 亚洲国产精品va在线看黑人| 免费黄网站欧美| 99在线精品视频在线观看| 国产精品99久久久久久久女警| 欧美午夜激情在线| 在线观看欧美| 久久综合色影院| 欧美激情精品久久久久久久变态| 久久综合久久久| 日韩亚洲在线| 亚洲欧美日韩中文视频| 国产一区二区中文| 亚洲高清资源| 在线精品视频免费观看| 久久亚裔精品欧美| av不卡在线观看| 久久都是精品| 亚洲欧美影音先锋| 欧美精品一区二区精品网| 久久理论片午夜琪琪电影网| 欧美高清在线精品一区| 欧美一级欧美一级在线播放| 另类图片国产| 久久激情网站| 欧美亚洲第一区| 亚洲伦理中文字幕| 亚洲精品在线观看视频| 美女91精品| 亚洲福利视频一区二区| 国产午夜精品理论片a级探花| 亚洲二区精品| 亚洲福利在线看| 欧美激情精品久久久久久| 亚洲成色精品| 亚洲成在人线av| 久久天天狠狠| 欧美黄色片免费观看| 亚洲精品偷拍| 国产精品久久久久久久久久尿| 亚洲精品一区二区三区樱花| 亚洲精一区二区三区| 欧美另类变人与禽xxxxx| avtt综合网| 亚洲视频高清| 国产精品伦理| 99ri日韩精品视频| 欧美日韩三级| 欧美一区视频| 亚洲成色777777在线观看影院| 99热免费精品在线观看| 国产精品日韩欧美一区| 亚洲小视频在线| 欧美a级片网| 一区二区三区日韩欧美| 国产麻豆一精品一av一免费| 美女脱光内衣内裤视频久久影院| 久久在线免费| 午夜精品美女久久久久av福利| 国产亚洲福利一区| 久久亚洲一区| 亚洲欧美在线免费| 欧美国产日本在线| 校园春色综合网| 国产精品亚洲欧美| 欧美精品国产一区二区| 久久精品视频在线| 日韩西西人体444www| 免费不卡欧美自拍视频| 欧美与欧洲交xxxx免费观看| 亚洲精品一区二区三区99| 国产精品亚洲а∨天堂免在线| 欧美伦理91| 欧美激情影院| 欧美三级在线视频| 欧美精品在线免费| 欧美日韩亚洲一区二区三区在线 | 亚洲手机在线| 亚洲性图久久| 久久精品网址| 欧美高清视频免费观看| 欧美不卡一卡二卡免费版| 欧美国内亚洲| 午夜精品久久久久久久99黑人| 国产精品久久久久久久久| 亚洲视频一区在线观看| 一区二区久久久久久| 亚洲高清中文字幕| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频日本| 国产精品国产三级国产专播精品人 | 国产精品免费看久久久香蕉| 欧美大片免费久久精品三p |