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

糯米

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

POJ 3123 Ticket to Ride 動態(tài)規(guī)劃+Minimal Steiner Tree

這題絕對不是蓋的。
題目大意是:
給出一個無向圖,和四對數(shù)據(jù)。每對數(shù)據(jù)分別為圖中的兩個點(diǎn)。
要求添加一些邊,使每對點(diǎn)都能連通,讓總邊權(quán)最小。

首先考慮一個子問題:指定一些點(diǎn),添加一些邊,讓它們連通,并且總邊權(quán)最小。
這個問題就是Minimal Steiner Tree問題,解決方法可以見這里
這問題不是蓋的,它居然是NP完全問題。。
汗。。今天終于在POJ見識到啥叫NP完全問題了。。

大的問題可以分為多個子問題??梢悦杜e所有pair的連接狀況。
比如說 {1和2鏈接,3和4鏈接} 或者 {1獨(dú)立,2獨(dú)立,3和4鏈接} 等等
一共有15種情況。分別為
    // 1,1,1,1
    {{1},{2},{3},{4}},
    // 1,1,2
    {{1,2},{3},{4}},
    {{1,3},{2},{4}},
    {{1,4},{2},{3}},
    {{2,3},{1},{4}},
    {{2,4},{1},{3}},
    {{3,4},{1},{2}},
    // 2,2
    {{1,2},{3,4}},
    {{1,3},{2,4}},
    {{1,4},{2,3}},
    // 1,3
    {{1,2,3},{4}},
    {{1,2,4},{3}},
    {{1,3,4},{2}},
    {{2,3,4},{1}},
    // 4
    {{1,2,3,4}},

其中有一些是重復(fù)的,就可以開一個數(shù)組保存下來。
貼一個我的程序。當(dāng)然,這個是TLE的。。官方的數(shù)據(jù)需要將近一分鐘才能跑完。
另外一個標(biāo)程運(yùn)行飛快,用得是更好的方法,點(diǎn)這里


#include <stdio.h>
#include 
<string.h>
#include 
<algorithm>
#include 
<cmath>

using namespace std;

char names[32][32];
int N, M;
int W[32][32];
const int INF = 10032*32;
int pairs[4];
int dp[256][2], dn;

int getcity(char *s)
{
    
int i;
    
for (i = 0; i < N; i++)
        
if (!strcmp(s, names[i]))
            
break;
    
return i;
}

int prim(int mask)
{
    
int i, j, mc, mi, a, c, t;

    c 
= 0;
    
for (i = 0; i < N; i++
        
if (mask & (1 << i)) {
            a 
= 1 << i;
            c
++;
        }

    t 
= 0;
    
while (--c) {
        mc 
= INF;
        
for (i = 0; i < N; i++)
            
if (a & (1 << i)) 
                
for (j = 0; j < N; j++)
                    
if (((mask ^ a) & (1 << j)) && W[i][j] < mc) {
                        mc 
= W[i][j];
                        mi 
= j;
                    }
        
if (mc == INF)
            
return INF;
        a 
|= 1 << mi;
        t 
+= mc;
    }

    
return t;
}

int K;

int dfs(int start, int mask, int n)
{
    
int i, r;

    
if (n >= K - 2)
        
return prim(mask);
    
    r 
= prim(mask);
    
for (i = start; i < N; i++
        
if ((1 << i) & ~mask) 
            r 
= min(r, dfs(i+1, mask|(1<<i), n+1));

    
return r;
}

int minicost(int mask)
{
    
int i, r;

    
for (i = 0; i < dn; i++)
        
if (mask == dp[i][0])
            
return dp[i][1];

    K 
= 0;
    
for (i = 0; i < N; i++)
        
if (mask & (1 << i))
            K
++;
    
    r 
= dfs(0, mask, 0);

    dp[dn][
0= mask;
    dp[dn][
1= r;
    dn
++;
    
return r;
}

int stats[15][8][8= {
    
// 1,1,1,1
    {{1},{2},{3},{4}},
    
// 1,1,2
    {{1,2},{3},{4}},
    {{
1,3},{2},{4}},
    {{
1,4},{2},{3}},
    {{
2,3},{1},{4}},
    {{
2,4},{1},{3}},
    {{
3,4},{1},{2}},
    
// 2,2
    {{1,2},{3,4}},
    {{
1,3},{2,4}},
    {{
1,4},{2,3}},
    
// 1,3
    {{1,2,3},{4}},
    {{
1,2,4},{3}},
    {{
1,3,4},{2}},
    {{
2,3,4},{1}},
    
// 4
    {{1,2,3,4}},
};

int main()
{
    
int i, j, k, a, b, c, ans;
    
char sa[32], sb[32];

    
while (scanf("%d%d"&N, &M), N) {
        
for (i = 0; i < N; i++)
            scanf(
"%s", names[i]);
        
for (i = 0; i < N; i++)
            
for (j = 0; j < N; j++)
                W[i][j] 
= INF;
        
for (i = 0; i < M; i++) {
            scanf(
"%s%s%d", sa, sb, &c);
            a 
= getcity(sa);
            b 
= getcity(sb);
            W[a][b] 
= W[b][a] = min(W[a][b], c);
        }
        
for (i = 0; i < 4; i++) {
            scanf(
"%s%s", sa, sb);
            a 
= getcity(sa);
            b 
= getcity(sb);
            pairs[i] 
= (1 << a) | (1 << b);
        }

        
// floyd
        for (k = 0; k < N; k++)
            
for (i = 0; i < N; i++)
                
for (j = 0; j < N; j++)
                    W[i][j] 
= min(W[i][k] + W[k][j], W[i][j]);

        dn 
= 0;
        ans 
= INF;
        
for (i = 0; i < 15; i++) {
            c 
= 0;
            
for (j = 0; stats[i][j][0]; j++) {
                a 
= 0;
                
for (k = 0; stats[i][j][k]; k++)
                    a 
|= pairs[stats[i][j][k] - 1];
                c 
+= minicost(a);
            }
            ans 
= min(ans, c);
        }

        printf(
"%d\n", ans);
    }
    
return 0;
}



 

posted on 2011-02-24 00:44 糯米 閱讀(1118) 評論(0)  編輯 收藏 引用 所屬分類: POJ

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品日韩在线一区| 亚洲视频精品| 亚洲免费网址| 一本色道久久综合狠狠躁篇的优点| 篠田优中文在线播放第一区| 一区二区三区久久精品| 欧美成人激情视频| 欧美成人免费小视频| 国产精品亚洲综合色区韩国| 9色国产精品| 一本色道婷婷久久欧美| 欧美国产专区| 欧美激情第4页| 91久久亚洲| 久久综合久久久久88| 麻豆精品网站| 一区在线电影| 久久久久九九九| 免播放器亚洲一区| 激情久久五月天| 久久午夜av| 欧美激情视频网站| 亚洲精品社区| 欧美日韩一区二| 一本色道久久综合亚洲精品小说| 夜夜躁日日躁狠狠久久88av| 欧美精品v国产精品v日韩精品| 欧美激情一区二区三区在线| 亚洲国产精品www| 欧美高清视频一区二区三区在线观看| 欧美成人精品激情在线观看| 亚洲国产日日夜夜| 欧美黑人多人双交| 亚洲欧洲日产国产综合网| 亚洲精品欧美日韩| 欧美日韩日本国产亚洲在线| 亚洲一级黄色av| 欧美中文在线观看| 狠狠色狠狠色综合日日tαg| 久久在线免费视频| 亚洲欧洲日本一区二区三区| 亚洲视频精品| 国产视频精品va久久久久久| 久久美女性网| 亚洲人成毛片在线播放| 亚洲欧美中文字幕| 激情欧美日韩| 欧美乱在线观看| 亚洲欧美日韩另类| 欧美成人精品1314www| 99亚洲一区二区| 国产日韩精品一区| 嫩模写真一区二区三区三州| 99热在这里有精品免费| 久久久久久久网站| 99视频精品在线| 国产视频欧美| 欧美久久久久久久久久| 亚洲欧美制服中文字幕| 欧美激情一区| 欧美一区二区成人6969| 亚洲国产高清高潮精品美女| 欧美午夜激情视频| 久久久久免费视频| 99精品久久| 欧美成人激情视频| 美女在线一区二区| 欧美精品一区二区三区一线天视频 | 欧美中文字幕不卡| 亚洲欧洲精品天堂一级| 欧美一区久久| 99在线观看免费视频精品观看| 国产亚洲视频在线观看| 欧美激情在线观看| 久久精品国产成人| 亚洲视频视频在线| 亚洲国产精品ⅴa在线观看| 久久狠狠亚洲综合| 亚洲一区二区在线观看视频| 尤物精品国产第一福利三区| 国产乱人伦精品一区二区| 欧美国产大片| 久久午夜电影网| 久久国产精品一区二区三区| 一本色道久久综合亚洲精品小说| 国产性色一区二区| 久久久亚洲高清| 中文在线一区| 亚洲福利专区| 狠狠爱www人成狠狠爱综合网| 欧美精品福利视频| 久久偷窥视频| 久久久久国产精品人| 亚洲一区影音先锋| 亚洲视频1区| 日韩视频中文字幕| 亚洲精品九九| 最新成人在线| 91久久极品少妇xxxxⅹ软件| 欧美激情精品久久久久久久变态| 免费视频一区二区三区在线观看| 久久精品欧洲| 久久精品视频在线观看| 性娇小13――14欧美| 亚洲综合日本| 亚洲欧美日韩成人| 午夜精品国产更新| 欧美一区国产二区| 久久九九国产精品| 99re热这里只有精品视频| 国产一区二区精品| 国内在线观看一区二区三区| 国产亚洲va综合人人澡精品| 国产亚洲精品一区二555| 国产日韩精品一区观看| 国内外成人在线视频| 黄色欧美日韩| 亚洲日本中文| 在线视频一区二区| 午夜日韩福利| 久久久91精品国产| 免费黄网站欧美| 亚洲国产精品悠悠久久琪琪| 亚洲国产老妈| 中文一区字幕| 久久成人18免费观看| 久久综合色一综合色88| 欧美日本国产视频| 国产精品视屏| 激情国产一区| 一本色道久久综合狠狠躁的推荐| 亚洲永久免费视频| 久久综合久久综合久久综合| 亚洲第一区在线观看| 亚洲一级网站| 久久综合九色综合欧美就去吻| 欧美黄污视频| 国产日产欧美一区| 亚洲日本va午夜在线电影| 亚洲天堂av图片| 久久夜色撩人精品| 日韩一区二区精品在线观看| 欧美一区二区三区在线观看视频 | 久久免费视频这里只有精品| 久久综合九九| 亚洲日本激情| 欧美一区二区成人| 欧美精品一区二| 国内一区二区在线视频观看| 一片黄亚洲嫩模| 久久国产视频网站| 亚洲精品乱码久久久久久按摩观| 午夜激情久久久| 欧美激情一区二区三区在线| 国产偷国产偷亚洲高清97cao| 亚洲精品久久久久久久久| 欧美一区91| 亚洲精品久久久久久一区二区| 亚洲欧美日韩中文播放| 欧美日韩999| 禁久久精品乱码| 香蕉久久夜色精品国产| 亚洲狠狠丁香婷婷综合久久久| 午夜精品在线看| 欧美午夜片欧美片在线观看| 亚洲国产精品va| 久热精品在线视频| 亚洲尤物精选| 欧美午夜理伦三级在线观看| 亚洲激精日韩激精欧美精品| 久久久国产精品一区| 亚洲一区二区三区精品在线| 欧美激情在线狂野欧美精品| 亚洲国产婷婷香蕉久久久久久99| 久久久精品久久久久| 亚洲视频一区| 国产精品v亚洲精品v日韩精品 | 欧美日韩精品二区| 亚洲激情不卡| 欧美不卡一卡二卡免费版| 久久久久久夜| 精品69视频一区二区三区| 久久九九热免费视频| 亚洲欧美在线另类| 国产精品中文在线| 欧美一区激情| 午夜视频在线观看一区二区三区| 国产精品国产三级欧美二区| 国产精品99久久久久久久女警| 亚洲精品字幕| 欧美日韩国产色站一区二区三区| 99视频有精品| 亚洲最新色图| 欧美午夜精品久久久久久人妖 | 一区二区三区视频免费在线观看| 亚洲韩国一区二区三区| 欧美精品免费看| 一区二区三区四区五区在线| 一区二区三区国产在线| 国产精品久久久久久久久搜平片|