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

            Why so serious? --[NKU]schindlerlee

            2010年02月09日星期二.pku2288 狀態壓縮動態規劃,求一個特殊要求的哈密頓路徑

            2010年02月09日星期二.pku2288
            狀態壓縮動態規劃,求一個特殊要求的哈密頓路徑,注意使用long long
            和判斷只有一個節點的情況
            推薦一篇講這個的文章
            http://www.shnenglu.com/EyeOfProvidence/archive/2010/01/10/105356.html
             1 
             2 #define bin(x) (1 <<(x))
             3 const int N = 13;
             4 int g[N][N],mask;
             5 LL val[N];
             6 LL stat[bin(N)][N][N];        //value of the path
             7 LL cnt[bin(N)][N][N];
             8 int m, n, sum;
             9 void post()
            10 {
            11     memset(g, 0sizeof(g));
            12     memset(stat, 0sizeof(stat));
            13     memset(cnt, 0sizeof(cnt));
            14     sum = 0;
            15 }
            16 
            17 int main()
            18 {
            19     int i, j, k, testcase, a, b, u, v, w;LL fac;
            20     scanf("%d"&testcase);
            21     while (testcase--) {
            22         scanf("%d%d"&n, &m);
            23         for (i = 0; i < n; i++) {
            24             scanf("%lld", val + i);
            25             sum += val[i];
            26         }
            27         for (i = 0; i < m; i++) {
            28             scanf("%d%d"&a, &b),a--,b--;
            29             g[a][b] = g[b][a] = 1;
            30         }
            31         if (n == 1) { //!!
            32             printf("%lld 1\n",val[0]);
            33             post(); continue;
            34         }
            35         for (u = 0; u < n; u++) {
            36             for (v = 0; v < n; v++) {
            37                 if (g[u][v]) {
            38                     cnt[bin(u) | bin(v)][u][v] = 1;
            39                     stat[bin(u) | bin(v)][u][v] = val[u] * val[v];
            40                 }
            41             }
            42         }
            43         int mask = bin(n)-1;
            44         for (i = 0; i <= mask; i++) {
            45             for (u = 0; u < n; u++) {
            46                 for (v = 0; v < n; v++) {
            47                     if (cnt[i][u][v]) {
            48                         for (w = 0; w < n; w++) {
            49                             if (g[v][w] && !(i & bin(w))) {
            50                                 fac = val[v] * val[w];
            51                                 if (g[u][w]) { fac += val[u] * val[v] * val[w]; }
            52                                 if (stat[i | bin(w)] [v][w] < stat[i][u][v] + fac) {
            53                                     stat[i | bin(w)][v][w] = stat[i][u][v] + fac;
            54                                     cnt[i | bin(w)][v][w] = cnt[i][u][v];
            55                                 } else if (stat [i | bin(w)][v][w] == stat[i][u][v] + fac) {
            56                                     cnt[i | bin(w)][v][w] += cnt[i][u][v];
            57                                 }
            58                             }
            59                         }
            60                     }
            61                 }
            62             }
            63         }
            64         LL res1 = 0, res2 = 0;
            65         for (j = 0; j < n; j++) {
            66             for (k = 0; k < n; k++) {
            67                 if (res1 < stat[mask][j][k]) {
            68                     res1 = stat[mask][j][k];
            69                     res2 = cnt[mask][j][k];
            70                 } else if (res1 == stat[mask][j][k]) {
            71                     res2 += cnt[mask][j][k];
            72                 }
            73             }
            74         }
            75         if (res1) { res1 += sum; }
            76         cout << res1 <<' ' << res2 / 2 << endl;
            77         post();
            78     }
            79     return 0;
            80 }



            posted on 2010-02-09 02:55 schindlerlee 閱讀(1333) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            成人久久精品一区二区三区 | 久久久久亚洲AV无码专区体验| 亚洲国产成人久久综合一区77| 亚洲精品tv久久久久| 久久精品国产亚洲AV高清热 | 久久久久久国产精品免费免费 | 精品国产日韩久久亚洲| 欧洲人妻丰满av无码久久不卡| 色偷偷888欧美精品久久久| 亚洲伊人久久成综合人影院| 精品久久久噜噜噜久久久 | 日韩精品无码久久一区二区三| 狠狠综合久久综合88亚洲| 2021国产成人精品久久| 精品久久久中文字幕人妻| 国产精品成人无码久久久久久 | 久久精品成人欧美大片| 7777久久亚洲中文字幕| 亚洲乱码中文字幕久久孕妇黑人| 久久国产成人亚洲精品影院| 9久久9久久精品| 久久久久亚洲AV无码麻豆| 人妻无码精品久久亚瑟影视 | 国产精品一久久香蕉国产线看 | 国产精品久久久久久久| 亚洲国产美女精品久久久久∴| 久久久精品久久久久久 | 人人狠狠综合久久亚洲婷婷| 亚洲中文字幕无码久久2020| 无码任你躁久久久久久久| 久久久青草青青国产亚洲免观| www亚洲欲色成人久久精品| 国产国产成人久久精品| 国产一区二区精品久久岳| 国产精品乱码久久久久久软件 | 国内精品久久久久久久久电影网| 男女久久久国产一区二区三区| 久久精品久久久久观看99水蜜桃 | 香蕉久久夜色精品升级完成| 精品久久人人爽天天玩人人妻| 日产精品久久久一区二区|