[WC2008]游覽計劃(斯坦納樹)

[Luogu4294]

題解 : 斯坦納樹

\(dp[i][j]\) 表示以\(i\)號節點為根,當前狀態為\(j\)(與\(i\)連通的點為\(1\)

當根\(i\)不改變時狀態轉移方程是:

\(dp[i][j] = \min_{s \in j}\{dp[i][s] + dp[i][\complement_js] - val[i]\}\)

當根改變時,要求\(i,k\)相鄰 :

\(dp[i][j] = \min\{dp[k][j] + val[i]\}\)

記錄\(pre[i][now]\)為由哪個狀態轉移而來,便于輸出方案

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug(x) cout<<#x<<"="<<x<<endl
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
const int INF=1e9+7;
inline LL read(){register LL x=0,f=1;register char c=getchar();while(c<48||c>57){if(c=='-')f=-1;c=getchar();}while(c>=48&&c<=57)x=(x<<3)+(x<<1)+(c&15),c=getchar();return f*x;
}int f[101][1111],a[101],d[4][2]={1,0,0,1,0,-1,-1,0};
bool inq[101],ans[11][11];
pii pre[101][1111];
queue <int> q;
int n,m,K,rt;inline void SPFA(int now){while(!q.empty()){int u=q.front();q.pop();inq[u]=0;for(int i=0;i<4;i++){int x=u/m,y=u%m,tx=x+d[i][0],ty=y+d[i][1],v=tx*m+ty;if(tx<0||tx>=n||ty<0||ty>=m) continue;if(f[u][now]+a[v]<f[v][now]){f[v][now]=f[u][now]+a[v];if(!inq[v]) inq[v]=1,q.push(v);pre[v][now]=pii(u,now);//狀態為now定義為與根相連的點的狀態,只有相鄰的才能轉移}}}
}inline void dfs(int x,int y,int now){int u=x*m+y;if(!pre[u][now].second) return;ans[x][y]=1;if(pre[u][now].first==u) dfs(x,y,now^pre[u][now].second);//如果是由自己更新過來,就要往兩個方向回溯dfs(pre[u][now].first/m,pre[u][now].first%m,pre[u][now].second);//否則就只往一個方向
}int main(){n=read(),m=read();memset(f,0x3f,sizeof f);for(int i=0,now=0;i<n;i++)for(int j=0;j<m;j++,now++){a[now]=read();if(!a[now]) f[now][1<<(K++)]=0,rt=now;}for(int now=1;now<(1<<K);now++){for(int i=0;i<n*m;i++){for(int s=now&(now-1);s;s=(s-1)&now)if(f[i][s]+f[i][now^s]-a[i]<f[i][now]){f[i][now]=f[i][s]+f[i][now^s]-a[i];//用自己的信息更新pre[i][now]=pii(i,s);}if(f[i][now]<f[0][0])q.push(i),inq[i]=1;}SPFA(now);//更新狀態為now的全部的值}printf("%d\n",f[rt][(1<<K)-1]);dfs(rt/m,rt%m,(1<<K)-1);for(int i=0,now=0;i<n;i++){for(int j=0;j<m;j++,now++){if(!a[now]) putchar('x');else putchar(ans[i][j]?'o':'_');}putchar('\n');}
}

轉載于:https://www.cnblogs.com/lizehon/p/10584201.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278118.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用dotnet template快速開發Microsoft Teams Outgoing Web Hook

在上一篇文章中&#xff0c;我們一步步從無到有在Microsoft Teams中開發了一個簡單的Outgoing Webhook&#xff0c;并和我們本地的Web API應用程序產生交互&#xff0c;總結起來的步驟大概如下&#xff1a; 導航到“團隊” Tab頁&#xff0c; 選中需要建立的Channel, 選中“應…

[Swift]LeetCode1013. 將數組分成和相等的三個部分 | Partition Array Into Three Parts With Equal Sum...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

京津冀產業協同升級 智慧城市等高端產業需求遇熱

云計算、智慧交通、城市環保科技等高端智慧城市產業項目正成為京津冀產業協同的新關注點。 21日&#xff0c;在由北京市經信委、天津市工信委、河北省工信廳聯合組織的京津冀產業協同發展招商推介專項行動上&#xff0c;超過200家與會企業共完成產業對接項目額達311.7億元。與以…

Microsoft Teams:刪除成員賬戶其歷史聊天會發生什么?

介紹&#xff1a; 此博客文章的目的是演示從Office 365刪除用戶的賬號后&#xff0c;此用戶在Microsoft Teams群聊和私聊中的歷史聊天記錄會發生什么改變。 以下是Microsoft Teams聊天對話&#xff0c;其中Adele和其他團隊成員正在參與對話&#xff1a; 此外, Adele和Mega還在…

PostgreSQL Huge Page 使用建議 - 大內存主機、實例注意

標簽 PostgreSQL , Linux , huge page , shared buffer , page table , 虛擬地址 , 物理地址 , 內存地址轉換表 背景 當內存很大時&#xff0c;除了刷臟頁的調度可能需要優化&#xff0c;還有一方面是虛擬內存與物理內存映射表相關的部分需要優化。 1 臟頁調度優化 1、主要包括…

Microsoft Teams:團隊Owner離開公司后,我們該怎么做?

您是否曾在這么一個團隊里&#xff0c;該團隊唯一有Owner權限的人離開了公司&#xff1f;不幸的是,如果這個人不再在公司里&#xff0c;您可能覺得沒有辦法讓其他團隊成員再成為team的owner。我有一個簡單易用的解決方案&#xff0c;但您需要成為Office 365租戶的Admin或聯系你…

python網絡編程-socket編程

一、服務端和客戶端 BS架構 &#xff08;騰訊通軟件&#xff1a;serverclient&#xff09; CS架構 &#xff08;web網站&#xff09; C/S架構與socket的關系&#xff1a; 我們學習socket就是為了完成C/S架構的開發 二、OSI七層模型 互聯網協議按照功能不同分為osi七層或tcp/ip五…

使用PowerShell配置Microsoft Teams

作為 IT 專業人員, 我一直在尋找自動化任務的方法, 并使日常操作簡單。當使用Microsoft Teams時, 是否能夠在團隊中自動創建團隊&#xff0c;渠道和設置對于Microsoft Teams組建的成功與否至關重要。PowerShell對Microsoft Teams的支持使您可以做到這一點&#xff0c;它為我提供…

常見Kotlin高頻問題解惑

在筆者的Kotlin交流群里&#xff0c;不少同學反復遇到了一些相似的問題。這些問題大都比較基礎&#xff0c;但又容易產生誤解。因此&#xff0c;我決定寫一篇文章&#xff0c;整理群里同學遇到的一些問題 變量和常量的使用 在Kotlin語言中&#xff0c;我們使用var聲明變量&…

關于神經網絡訓練的一些建議筆記

關于網絡訓練時的參考建議&#xff1a; 1.train loss不斷下降&#xff0c;test loss不斷下降&#xff0c;網絡正在學習 2.train loss不斷下降&#xff0c;test loss趨于不變&#xff0c;網絡過擬合&#xff0c;需要增大數據&#xff1b;減小網絡規模dropout&#xff1b;權重衰減…

Microsoft Teams的保留策略

Microsoft Teams保留策略現在可在Office 365安全性和合規性中心里進行配置 今天&#xff0c;我們很自豪地宣布&#xff0c;我們正在開始推出針對Microsoft Teams的保留策略。 推出預計將在未來幾周內完成。 通過此次發布&#xff0c;Teams管理員可以使用Office 365安全性和合規…

八年溯源,如何巧搭區塊鏈

虎嗅注&#xff1a;區塊鏈正在逐步商業化&#xff0c;但最大的挑戰是共識。 為什么這樣說&#xff1f;因為商品的溯源防偽業務在過去正是因為缺乏信任感而沒有得到普及&#xff0c;這是每個溯源從業者最大的感受。 在虎嗅虎跑團每兩周一次線上分享會上&#xff0c;溯源鏈創始人…

數字簽名過程及數字證書

數字簽名是什么&#xff1f; 作者&#xff1a;David Youd 翻譯&#xff1a;阮一峰 原文網址&#xff1a;http://www.youdzone.com/signature.html 1.鮑勃有兩把鑰匙&#xff0c;一把是公鑰&#xff0c;另一把是私鑰。 2.Bob把公鑰送給他的朋友們-Pat、Doug、Susan-- 每人一把…

Teams與OneDrive for Business和SharePoint的關系

作為一個相對看重個人信息安全與隱私的人&#xff0c;個人附件等資料在Microsoft Teams中的存儲方式、文件訪問權限、可見范圍問題引起了我的好奇。 眾所周知&#xff0c;Teams包含3大主要的模塊&#xff1a;單人聊天、團隊、會議。那下面讓我們一起來看一下&#xff0c;對這三…

hadoop學習筆記(二):centos7三節點安裝hadoop2.7.0

環境win7vamvare10centos7 一、新建三臺centos7 64位的虛擬機 master 192.168.137.100 root/123456 node1 192.168.137.101 root/123456 node2 192.168.137.102 root/123456 二、關閉三臺虛擬機的防火墻&#xff0c;在每臺虛擬機里面執行&#xff1a; systemctl sto…

index.html 的默認301或者302跳轉

index.html 的默認301或者302跳轉 <!DOCTYPE html> <html> <head> <title>Google</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> <script>window.locat…

在Microsoft Teams中的Visio協作

所有Team站點都帶有專用文件庫&#xff0c;用于存儲所有工作組的內容。 您現在可以從桌面或云存儲站點將Visio文件上載到此庫&#xff0c;例如&#xff0c;您所在Team的資產都集中在一個位置&#xff0c;供具有權限的任何人進行訪問。與其他存儲文件一樣&#xff0c;您可以直接…

用區塊鏈打擊假新聞 這可能是最2017年的一件事

據外媒報道&#xff0c;非營利性基金會PUBLIQ公布了一個基于區塊鏈打造的平臺。這是一個用于創建和分享原創新聞和媒體內容的平臺&#xff0c;它將在近期推出。據了解&#xff0c;PUBLIQ創建這一平臺則是希望能借用類似于比特幣一樣的系統來打擊假新聞。 通過創建一個受信任的經…

oo面向對象第一單元總結

oo第一次作業主要考察了多項式的求導&#xff0c;從簡單的冪函數求導到三角函數求導再到嵌套函數的求導&#xff0c;難度循序漸進&#xff0c;對我們對于面向對象的理解的要求也在一次一次提升。一行行代碼打下來&#xff0c;一夜夜熬過去&#xff0c;我也來到了這個短暫的停靠…

Microsoft Teams免費版本初體驗

Microsoft Teams推出有一段時間了&#xff0c;如果想要體驗Teams&#xff0c;必須需要有Office365的訂閱。最近微軟為了進一步推廣Teams&#xff0c;突然宣布Teams免費了。使用過Teams的讀者知道Teams是基于Office365賬號和組的&#xff0c;那它免費后&#xff0c;不使用Office…