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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

斯坦纳树小结

發布時間:2025/4/5 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 斯坦纳树小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

斯坦納樹

網上關于這玩意兒的資料不是很多

度娘的定義

斯坦納樹問題是組合優化問題,與最小生成樹相似,是最短網絡的一種。 最小生成樹是在給定的點集和邊中尋求最短網絡使所有點連通。 而最小斯坦納樹允許在給定點外增加額外的點,使生成的最短網絡開銷最小。

我個人認為這玩意兒應該是某一類沒有多項式解法的最小生成樹問題,然后可以用狀壓DP求解

直接從一道題目入手

?

?

[WC2008]游覽計劃

鏈接

這應該算是斯坦納樹的板子題了

我們令$f[i][sta]$表示$i$號節點,與其他節點的聯通性為$sta$時的最小代價,這里的$sta$是一個二進制數,在它二進制下的每一位中,$0$表示不連通,$1$表示聯通

那么轉移的時候會有兩種情況

  • 由子集轉移而來

方程為$$f[i][sta] = \min_{s \in sta}\{f[i][s] + f[i][\complement_ssta] - val[i]\}$$

后面的減是防止加重

這里在枚舉子集的時候有一個技巧

for(int s = sta; s; s = (s - 1) & sta)

這樣可以枚舉出sta的所有子集

  • 由不含該節點的狀態轉移而來

?轉移方程為

其中$i$為新加入的節點

$$f[i][j] = \min\{f[k][j] + val[i]\}$$

大家看到這個方程有沒有一種很熟悉的感覺?

是不是很像三角形不等式?

因此,我們可以用SPFA進行這種轉移

?

完整代碼

// luogu-judger-enable-o2 // luogu-judger-enable-o2 #include<cstdio> #include<queue> #include<cstring> using namespace std; const int limit = 1050; const int INF = 1e9; inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}return x * f; } #define MP(i,j) make_pair(i,j) #define se second #define fi first #define Pair pair<int,int> int N, M, tot = 0; int a[12][12], f[12][12][limit]; int xx[5] = {-1, +1, 0, 0}; int yy[5] = {0, 0, -1, +1}; int vis[12][12]; struct PRE {int x, y, S; }Pre[12][12][limit]; queue<Pair>q; void SPFA(int cur) {while(q.size() != 0) {Pair p = q.front();q.pop();vis[p.fi][p.se] = 0;for(int i = 0; i <4; i++) {int wx = p.fi + xx[i], wy = p.se + yy[i];if(wx < 1 || wx > N || wy < 1 || wy > M) continue;if(f[wx][wy][cur] > f[p.fi][p.se][cur] + a[wx][wy]) {f[wx][wy][cur] = f[p.fi][p.se][cur] + a[wx][wy];Pre[wx][wy][cur] = (PRE){p.fi, p.se, cur};if(!vis[wx][wy])vis[wx][wy] = 1, q.push(MP(wx,wy));}}} } void dfs(int x, int y, int now) {vis[x][y] = 1;PRE tmp = Pre[x][y][now];if(tmp.x == 0 && tmp.y == 0) return;dfs(tmp.x, tmp.y, tmp.S);if(tmp.x == x && tmp.y == y) dfs(tmp.x, tmp.y, now - tmp.S); } int main() {//freopen("a.in", "r", stdin);N = read(); M = read();memset(f, 0x3f, sizeof(f));for(int i = 1; i <= N; i++)for(int j = 1; j <= M; j++) {a[i][j] = read();if(a[i][j] == 0)f[i][j][1 << tot] = 0, tot++;}int limit = (1 << tot) - 1;for(int sta = 0; sta <= limit; sta++) {for(int i = 1; i<= N; i++)for(int j = 1; j <= M;j++) {for(int s = sta; s; s = (s - 1) & sta) {if(f[i][j][s] + f[i][j][sta - s] - a[i][j] < f[i][j][sta])f[i][j][sta] = f[i][j][s] + f[i][j][sta - s] - a[i][j],Pre[i][j][sta] = (PRE){i,j,s};}if(f[i][j][sta] < INF) q.push(MP(i,j)), vis[i][j] = 1;}SPFA(sta);}int ansx, ansy, flag = 0;for(int i = 1; i <= N && !flag; i++)for(int j = 1; j <= M; j++)if(!a[i][j]) {ansx = i, ansy = j; flag = 1; break;}printf("%d\n",f[ansx][ansy][limit]); memset(vis, 0, sizeof(vis));dfs(ansx, ansy, limit);for(int i = 1; i <= N; i++, puts("")) {for(int j = 1; j <= M; j++) {if(a[i][j] == 0) putchar('x');else if(vis[i][j]) putchar('o');else putchar('_'); } } return 0; }

?

?

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的斯坦纳树小结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩欧美国产激情 | 天天爽天天搞 | 99re在线精品视频 | 九九热中文字幕 | 用力挺进新婚白嫩少妇 | 在线h网 | 一边顶弄一边接吻 | 国产尤物视频在线 | 潘金莲激情呻吟欲求不满视频 | 亚洲图色av| 在线观看免费视频一区 | 亚洲精品成人在线视频 | 国产一级二级三级在线观看 | 朝鲜美女黑毛bbw | 不卡视频一区二区三区 | 国内9l自拍 | 伊人网综合 | 久草最新网址 | 亚洲一区av | 无码人妻aⅴ一区二区三区日本 | 色婷婷精品视频 | 在哪里可以看黄色片 | 国产91精品看黄网站在线观看 | 夜夜嗨av一区二区三区网页 | 第一色综合 | 日本大尺度做爰呻吟舌吻 | 日韩高清不卡一区 | 欧美激情中文字幕 | 欧美福利视频一区二区 | 天天做天天爱夜夜爽 | 久久久久久国产精品三区 | 国产成人+综合亚洲+天堂 | 天天谢天天干 | 欧美视频一区二区三区在线观看 | 日韩免费视频一区 | 黄色avav| 欧美亚洲免费 | 天天摸日日操 | 亚洲国产精品无码观看久久 | 精品国产一区二区三区四区阿崩 | 日本xxxx裸体xxxx出水 | av动漫在线免费观看 | 男人操女人动漫 | 极品在线播放 | 亚洲精品在线中文字幕 | 日本在线观看中文字幕 | 国产精品免费在线播放 | 波多野结衣理论片 | 相亲对象是问题学生动漫免费观看 | 97视频免费 | 亚洲超碰在线 | 四虎成人精品 | 日韩久久不卡 | 高清欧美精品xxxxx在线看 | 男人av网站 | 99色网 | 欧美日韩六区 | 申鹤乳液狂飙 | 少妇久久久久久久久久 | 一区二区日本 | 亚洲精品中文字幕乱码三区 | 亚洲网站在线看 | 一本大道av伊人久久综合 | 黄色网址哪里有 | 丁香伊人网 | 中文字幕一区二区在线视频 | 亚洲综合网在线观看 | 吃奶摸下的激烈视频 | 日韩成人短视频 | 亚洲成人另类 | 中文字幕在线播放一区 | 免费啪视频| 国产一区二区三区观看 | 国产精品99久久免费黑人人妻 | 久久精品人妻一区二区 | 蜜桃视频网站 | 天堂а√在线中文在线鲁大师 | 青青草视频| 69视频一区二区 | 欧美激情性做爰免费视频 | 波多野结衣一区 | 亚洲视频中文字幕 | 欧美性大战久久久 | 亚洲一区二区三区国产 | 国产精品免费看久久久无码 | 制服av在线| 亚洲午夜精品在线 | 久久精品国产精品亚洲色婷婷 | 国产网站免费 | 精品一区二区三区视频在线观看 | 青青青草视频在线 | 色呦呦视频在线 | 国产精品1区2区3区 在线看黄的网站 | 67194在线免费观看 | 亚洲天堂成人在线 | 日韩 在线 | 精品无码国产av一区二区三区 | 亚洲免费影视 | 一级欧美视频 |