日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[NOIP2017 TG D2T2]宝藏

發布時間:2023/12/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [NOIP2017 TG D2T2]宝藏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:給定一個有重邊,邊有權值的無向圖。從某一個點出發,求到達所有的點需要的最少費用,并且限制兩點之間只有一條路徑。費用的計算公式為:所有邊的費用之和。而邊$x->y$的費用就為:$y$到初始點的之間點的個數(包括起始點) $\times$ 邊權。

題解:狀壓$DP$,令$f_{i,j}$表示當前深度為$i$,狀態為$j$的最小花費

$$f_{i,s}=f_{i-1,t}+g_{s,t}\times(i?1)$$

再開一個數組$c_{s,i}表示狀態$s$挖到點$i$的最小花費(不考慮深度)

用邊權更新$c$數組,再用$c$數組更新$g$數組即可

卡點:1.$c$數組第二維開太小

C++ Code:

#include <cstdio> #include <cstring> #define lb(x) (x & -x) #define maxn 13 using namespace std; const int inf = 0x3f3f3f3f; int n, m, U, ans = inf; int e[maxn][maxn], c[maxn][1 << maxn | 3]; int g[1 << maxn | 3][1 << maxn | 3], f[maxn][1 << maxn | 3]; inline void getmin(int &a, int b) {if (a > b) a = b;} inline int min(int a, int b) {return a < b ? a : b;} int main() {scanf("%d%d", &n, &m); U = 1 << n;if (n == 1) {puts("0");return 0;}memset(e, 0x3f, sizeof e);for (int i = 0; i < m; i++) {int a, b, c;scanf("%d%d%d", &a, &b, &c);e[a][b] = e[b][a] = min(c, e[a][b]);}for (int i = 1; i <= n; i++) {for (int j = 1; j < U; j++) {c[i][j] = inf;if (!(j & (1 << i - 1))) {for (int k = 1; k <= n; k++) {if (j & (1 << k - 1)) getmin(c[i][j], e[i][k]);}}}}for (int i = 1; i < U; i++) {for (int j = i & i - 1; j; j = i & j - 1) {int tmp = i ^ j;for (int k = 1; k <= n; k++) {if (tmp & (1 << k - 1)) {g[i][j] += c[k][j];if (g[i][j] > inf) g[i][j] = inf;}}}}memset(f, 0x3f, sizeof f);for (int i = 1; i <= n; i++) f[1][1 << i - 1] = 0;for (int i = 2; i <= n; i++) {for (int j = 1; j < U; j++) {for (int k = j & j - 1; k; k = j & k - 1) {int tmp = inf;if (g[j][k] ^ inf) tmp = g[j][k] * (i - 1);if (f[i - 1][k] ^ inf) getmin(f[i][j], f[i - 1][k] + tmp);}}getmin(ans, f[i][U - 1]);}printf("%d\n", ans);return 0; }

  

轉載于:https://www.cnblogs.com/Memory-of-winter/p/9504801.html

總結

以上是生活随笔為你收集整理的[NOIP2017 TG D2T2]宝藏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。