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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

POJ 3123 Ticket to Ride 高效解法

低效率解法在這里
低效率的解法是沒法通過POJ的數據的。
另外一個標程中的解法十分給力,僅用時110ms(status上面還有用時16ms的)
首先來看一下這段程序:

#include <iostream>
#include 
<string>
#include 
<map>

using namespace std;

int main()
{
    
int INF=99999999,N,K,d[30][30],i,j,k,x,y,z,dp[256][30],e[8],v[30],c,b;
    
string s,t;    
    
while (cin >> N >> K && N) {
        map
<string,int> cityMap;
        
for(i=0;i<N;i++
            
for(j=0;j<N;j++
                d[i][j]
=i==j?0:INF;
        
for(i=0;i<N;i++) {
            cin 
>> s;
            cityMap[s]
=i;
        }
        
if (K)
            
while(cin >> s >> t >> z, x=cityMap[s], 
                    y
=cityMap[t], 
                    d[x][y]
=d[y][x]=min(d[y][x],z), --K);
        
for(k=0;k<N;k++)
            
for(i=0;i<N;i++)
                
for(j=0;j<N;j++)
                    d[i][j]
=min(d[i][j],d[i][k]+d[k][j]);
        
for(i=0;i<8;i++) {
            cin 
>> s;
            e[i]
=cityMap[s];
            
for(j=0;j<N;j++)
                dp[
1<<i][j]=d[j][e[i]];
        }        
        
for(i=1;i<256;i++) {
            
if (!(i&(i-1)))
                
continue;
            
// step1
            for(k=0;k<N;k++) {
                dp[i][k]
=INF;
                v[k]
=0;
                
for(j=1;j<i;j++)
                    
if ((i|j)==i)
                        dp[i][k]
=min(dp[i][k],dp[j][k]+dp[i-j][k]);
            }
            
// step2
            for(j=0;b=INF,j<N;j++) {
                
for(k=0;k<N;k++)
                    
if (dp[i][k]<=&& !v[k])
                        b
=dp[i][c=k];
                
for(k=0,v[c]=1;k<N;k++)
                    dp[i][c]
=min(dp[i][c],dp[i][k]+d[k][c]);
            }
        }
        
        
// step3
        for(i=0,b=INF;z=0,i<256;b=min(b,z),i++)
              
for(j=0;y=0,j<4;z+=!!y*dp[y][x],j++)
                
for(k=0;k<8;k+=2)
                      
if ((i>>k&3)==j)
                        y
+=3<<k,x=e[k];        
        
        cout 
<< b << endl;     
    }
    
return 0;
}

這段程序寫得很讓人費解。花了半天時間我才搞明白。
實際上大體的思路是跟低效率的解法一樣的。
就是在求Minimal Steiner Tree這一步,它用了一種新的動態規劃的方法。
動態規劃的方程為:
dp[mask][i] = { 以點i為根,包含mask中的點的最小生成樹的權值 }

在得知 dp[mask - 1][1...N] 的情況下,如何推出 dp[mask][1...N] 呢?
程序中分為 step1 和 step2 兩個步驟。
step1 推出:
a = min{ dp[m1][i] + dp[m2][i] } 其中 m1|m2 = mask
這個很好理解。
step2 推出:
b = min{ dp[mask][j] + d[j][i] }
程序中每次都從 dp[mask][1...N] 中選出最小的一個 dp[mask][c]
按這種順序更新就能保證結果的正確
因此 dp[mask][i] = min(a, b)

這個動態規劃法的確牛逼。

step3則是枚舉4條路線的各種組合情況。求出每種組合的MST權值。

代碼寫得很牛逼。看了半天才看懂。如果讓我寫,行數至少多出2,3倍來。。
老外就是牛逼,一行代碼都不浪費。

posted on 2011-02-24 17:16 糯米 閱讀(2070) 評論(1)  編輯 收藏 引用 所屬分類: POJ

評論

# re: POJ 3123 Ticket to Ride 高效解法  回復  更多評論   

你好.我是從你的舊blog找過來的.原來的rfl的代碼鏈接http://gforge.osdn.net.cn/svn/rfl/

失效了.不知道哪里能找到代碼.
除了blog.怎樣才能聯系到你?
我的email: boxer#sina.cn
2011-03-15 17:22 | sudoers
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产高清在线观看视频| 欧美亚洲综合在线| 亚洲影视中文字幕| 亚洲欧美自拍偷拍| 欧美一乱一性一交一视频| 欧美日韩国产亚洲一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美色欧美亚洲高清在线视频| 午夜精品视频网站| 99re亚洲国产精品| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美理论在线播放| 亚洲视频在线一区观看| 亚洲一区综合| 欧美日韩精品一区视频| 在线观看视频一区二区| 亚洲电影下载| 久久国产精品99国产精| av成人动漫| 欧美偷拍一区二区| 亚洲肉体裸体xxxx137| 久久久欧美精品| 日韩图片一区| 国产精品久久久久久久久久直播| 一区二区三区视频观看| 久久九九国产精品| 亚洲欧洲日韩在线| 99这里只有精品| 狠狠久久亚洲欧美专区| 国产亚洲欧美一区二区| 国产精品久久久久影院亚瑟| 国产模特精品视频久久久久| 欧美主播一区二区三区| 久久激情网站| 欧美成人精品| 国产精品99一区| 国产精品午夜av在线| 国产农村妇女毛片精品久久莱园子| 一本久道久久久| 老司机一区二区| 国产免费亚洲高清| 欧美区一区二区三区| 亚洲欧洲日本专区| 亚洲国产精品一区制服丝袜 | 亚洲茄子视频| 在线视频精品| 欧美大片91| 影音先锋在线一区| 欧美一级专区| 国产欧美日本一区二区三区| 国产一区二区三区在线观看网站| 这里只有精品电影| 亚洲精品午夜| 久久婷婷色综合| 亚洲精品少妇| 亚洲国产精品第一区二区| 午夜精品一区二区三区在线播放| 噜噜噜噜噜久久久久久91| 国自产拍偷拍福利精品免费一| 夜夜嗨一区二区| 日韩亚洲欧美中文三级| 欧美va天堂在线| 99视频一区二区三区| 91久久国产综合久久91精品网站| 免费毛片一区二区三区久久久| 欧美性开放视频| 欧美在线免费观看视频| 老鸭窝91久久精品色噜噜导演| 国产日韩欧美自拍| 久久深夜福利| 欧美日产国产成人免费图片| 亚洲视频网站在线观看| 亚洲一区二区视频在线| 在线不卡中文字幕播放| 亚洲欧洲综合另类在线| 国内成人精品一区| 亚洲看片免费| 海角社区69精品视频| 一区二区日韩免费看| 国内精品嫩模av私拍在线观看| 国产精品99久久久久久久久久久久| 亚洲一区二三| 亚洲视频在线观看三级| 久久av最新网址| 亚洲一区二区精品在线观看| 久久婷婷久久一区二区三区| 欧美资源在线观看| 国产精品成人v| 亚洲另类在线视频| 国产精品99久久久久久宅男 | 国产精品乱码一区二区三区| 久久综合伊人77777尤物| 欧美日韩久久精品| 一区二区动漫| 欧美精品一区二区高清在线观看| 欧美一区观看| 狠狠色丁香婷婷综合久久片| 亚洲第一在线综合在线| 亚洲丰满少妇videoshd| 麻豆91精品| 日韩一级欧洲| 欧美一二区视频| 欧美精品在线一区二区三区| 亚洲电影欧美电影有声小说| 久热国产精品| 一区二区三区波多野结衣在线观看| 日韩视频亚洲视频| 国产农村妇女毛片精品久久麻豆 | 亚洲巨乳在线| 久久精品在线观看| 在线观看的日韩av| 欧美日韩一区高清| 久久国产综合精品| 亚洲精品一线二线三线无人区| 一区二区三区国产在线| 在线精品视频一区二区| 国产欧美日韩综合| 欧美三区美女| 欧美日韩国产综合视频在线观看 | 国产精品一区二区视频| 欧美视频专区一二在线观看| 欧美日本中文| 国产精品最新自拍| 国内精品久久久| 狠狠色狠狠色综合日日tαg| 精品成人国产| 一本久久a久久免费精品不卡| 亚洲美女精品一区| 午夜伦欧美伦电影理论片| 欧美一区二区三区视频免费| 久久精品国产精品亚洲| 欧美成人免费观看| 亚洲最新中文字幕| 欧美一级网站| 欧美视频一区二区| 亚洲激情电影中文字幕| 一区二区三区精品| 两个人的视频www国产精品| 亚洲电影免费观看高清完整版| 亚洲青色在线| 久热re这里精品视频在线6| 国产精品jizz在线观看美国| 一区一区视频| 午夜精品久久久久久久99黑人| 欧美jizzhd精品欧美巨大免费| 91久久综合亚洲鲁鲁五月天| 久久狠狠一本精品综合网| 欧美三区在线视频| 日韩系列欧美系列| 久久人人爽人人爽爽久久| 一区二区日韩免费看| 欧美日韩免费在线视频| 亚洲全部视频| 亚洲国产精品va在线观看黑人| 久久久免费精品| 在线播放豆国产99亚洲| 欧美一站二站| 久久久另类综合| 亚洲国产专区| 亚洲国产色一区| 欧美日韩美女一区二区| 日韩一级二级三级| 一区二区三区四区五区在线| 欧美日韩在线观看一区二区三区 | 欧美黄色免费| 欧美成人精品影院| 99pao成人国产永久免费视频| 欧美国产另类| 欧美日韩午夜| 久久在线视频| 国产精品免费一区二区三区在线观看| 亚洲永久视频| 久久精品国产亚洲aⅴ| 精品69视频一区二区三区| 91久久亚洲| 1000部精品久久久久久久久 | 亚洲少妇一区| 久久精品视频免费播放| 日韩亚洲欧美一区| 欧美主播一区二区三区| 亚洲私人影吧| 农村妇女精品| 久久久久网站| 欧美日韩国产高清视频| 欧美一级一区| 欧美日韩专区| 91久久中文| 亚洲高清自拍| 久久www成人_看片免费不卡| 在线视频一区二区| 欧美激情视频一区二区三区免费| 欧美一区中文字幕| 国产亚洲人成网站在线观看| 亚洲精品欧美精品| 亚洲精品久久久久久久久| 久久综合久久综合久久综合| 久久久久久午夜| 国产一区欧美日韩| 欧美在线视频一区二区三区| 亚洲夜晚福利在线观看|