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

            PKU Tour in Wonder Land 樹型DP

            這道題題意是:
            從根節(jié)點(diǎn)出發(fā),每條邊僅僅走一遍,每個(gè)節(jié)點(diǎn)僅僅走一遍,問遍歷完整棵樹然后回到根需要加多少條邊。
            這題的本質(zhì)是在樹的路徑最小劃分。可以使用樹形DP
            狀態(tài)dp[pos][0]表示遍歷完這顆子樹并且鏈的一端在根節(jié)點(diǎn)最少需要添加邊的數(shù)量
            dp[pos][1]表示完遍歷這顆子樹需要添加最少的邊的數(shù)量
            然后下面狀態(tài)轉(zhuǎn)移就簡單了
            son[pos]=dp[i][1],i為父節(jié)點(diǎn)為pos的子樹
            num[pos]為以pos為根節(jié)點(diǎn)的子樹數(shù)量
            dp[pos][0]=min(son[pos]+dp[i][0]-dp[i][1]+num[pos]-1),i為以pos為根的子樹
            dp[pos][1]=min(son[pos]+dp[i][0]-dp[i][1]+dp[j][0]-dp[j][1]+num[pos]-2),i為以pos為根的子樹
             1 # include <stdio.h>
             2 # include <string.h>
             3 # include <stdlib.h>
             4 # define N 110000
             5 # define M 210000
             6 int g[N],n,tmp[N];
             7 int nxt[M],v[M],c=0;
             8 int dp[N][2];
             9 void solve(int pos,int fa)
            10 {
            11     if(dp[pos][0]!=-1return;
            12     else
            13     {
            14         int null=0,p,total=0,num=0,min1=0xfffffff,min2=0xfffffff;
            15         for(p=g[pos];p!=-1;p=nxt[p])
            16            if(v[p]!=fa)
            17            {
            18               null=1;
            19               solve(v[p],pos);
            20               if(dp[v[p]][0]-dp[v[p]][1]<min1)
            21               {
            22                 min2=min1;
            23                 min1=dp[v[p]][0]-dp[v[p]][1];
            24               }
            25               else if(dp[v[p]][0]-dp[v[p]][1]<min2)
            26               {
            27                 min2=dp[v[p]][0]-dp[v[p]][1];
            28               }
            29               total+=dp[v[p]][1];
            30               num++;
            31            }
            32         if(!null)
            33            dp[pos][0]=dp[pos][1]=0;
            34          else
            35          {
            36              dp[pos][0]=total+min1+num-1;
            37              if(min2!=0xfffffff)
            38                dp[pos][1]=total+min1+min2+num-2;
            39              if(dp[pos][0]<dp[pos][1]||dp[pos][1]==-1)
            40                 dp[pos][1]=dp[pos][0];
            41          }  
            42     }
            43 }
            44 int main()
            45 {
            46     int i;
            47     scanf("%d",&n);
            48     memset(g,-1,sizeof(g));
            49     c=0;
            50     for(i=1;i<n;i++)
            51     {
            52          int a,b;
            53          scanf("%d%d",&a,&b);
            54          v[c]=b;
            55          nxt[c]=g[a];
            56          g[a]=c++;
            57          v[c]=a;
            58          nxt[c]=g[b];
            59          g[b]=c++;
            60     }
            61     memset(dp,-1,sizeof(dp));
            62     solve(1,0);
            63     printf("%d\n",dp[1][1]+1);
            64     return 0;
            65 }
            66 


            posted on 2010-10-15 18:23 yzhw 閱讀(167) 評論(0)  編輯 收藏 引用 所屬分類: DPgraph

            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            狠狠色丁香婷婷久久综合不卡| 久久99精品久久久久久久不卡| 办公室久久精品| 一级做a爰片久久毛片免费陪| 中文字幕无码免费久久| 亚洲狠狠综合久久| 一本久久知道综合久久| 秋霞久久国产精品电影院| 久久久久久久免费视频| 久久这里只精品国产99热| 人妻无码精品久久亚瑟影视| 国内精品伊人久久久久av一坑 | 久久久精品人妻一区二区三区四 | 日日噜噜夜夜狠狠久久丁香五月| 久久青草国产精品一区| 久久人妻AV中文字幕| 精品熟女少妇aⅴ免费久久| 久久久久人妻精品一区| 伊人久久大香线蕉精品不卡 | 久久精品亚洲中文字幕无码麻豆| 久久一区二区三区99| 四虎国产精品免费久久久| 中文字幕精品无码久久久久久3D日动漫| 粉嫩小泬无遮挡久久久久久| 久久精品免费一区二区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品成人免费观看97| 久久99热国产这有精品| www性久久久com| 国产精品久久久久天天影视| 天天爽天天狠久久久综合麻豆| 色播久久人人爽人人爽人人片AV| 久久精品99无色码中文字幕| 久久国产精品国产自线拍免费| 99精品久久精品一区二区| 狠狠精品久久久无码中文字幕| 亚洲日本久久久午夜精品| 国产精品久久久久a影院| 亚洲中文久久精品无码ww16| 亚洲午夜久久久影院| 久久天堂AV综合合色蜜桃网 |