Tyvj P1288 飄飄乎居士取能量塊

2021-07-16 18:54:28 字數 1139 閱讀 2963

背景

9月21日,pink生日;9月22日,lina生日;9月23日,輪到到飄飄乎居士(狂歡吧,(^__^) 嘻嘻……)。

描述 9月21日,今天是pink的生日,飄飄乎居士當然要去別人的領土大鬧一番啦!

為了收集更多的能量到pink家大鬧,飄飄乎居士準備從後花園中取出自己多年積攢的p個能量塊。後花園一共被劃分n個地區,能量塊被分散在裡面,現在飄飄乎居士拿出地圖,發現自己站在1的地方,而他要做的就是用最短的路程把所有的能量塊取出,並且最後走到位於n的出口處,而飄飄乎居士一直是個懶人,他想知道最少要走多少路程才能夠取到所有的能量塊,並且走到出口

輸入格式

第一行乙個正整數n,表示花園被劃分成了n個地區

接下來乙個n*n的矩陣,代表個點之間的相互距離,資料保證從i走到i沒有路程

在下來乙個整數p,表示一共有p個能量塊

接下來一行,表示各個能量塊的位置,資料保證1和n沒有能量塊,且每個地區最多乙個能量塊

對於所有的資料 0< n<=100 0<=p<=10 任意兩點的距離為乙個小於1000的正整數

輸出格式

乙個數,飄飄乎居士所要行走的最小距離

測試樣例1

輸入 3

0 10 1

3 0 5

1 2 0

1 2

輸出 7

備註 花園被分為3個地區,在2號地區有能量塊,飄飄乎居士行走的路線如下

1->3->2->1->3

行走的總路程為7,也就是最後的答案。

floyd預處理出每兩點之間的最短路

然後問題就轉化為了關於必須走的點集的哈密頓路徑問題

可以搜尋點集的順序(排列),或使用狀態壓縮dp

第一次因為陣列開小了,wa了

感謝yny神犇指導。

#include

#include

#include

#include

using

namespace

std;

int n,p,ans=1e7,sum,c[15],f[101][101];

int main()

printf("%d\n",ans);

return

0;}

tyvjP1288 飄飄乎居士取能量塊

p1288飄飄乎居士取能量塊 9月21日,pink生日 9月22日,lina生日 9月23日,輪到到飄飄乎居士 狂歡吧,嘻嘻 9月21日,今天是pink的生日,飄飄乎居士當然要去別人的領土大鬧一番啦!為了收集更多的能量到pink家大鬧,飄飄乎居士準備從後花園中取出自己多年積攢的p個能量塊。後花園一共...

12 8 8 可見與隱藏

1 超出範圍 overflow屬性 1.visble 表示層的大小和內容都會自動顯示出來 2.auto 表示在只在內容超出層的範圍時才顯示滾動條 3.hidden 表示會隱藏超出層範圍的內容 4.scroll 表示從事顯示滾動條。2 可見屬性 visibility 1.inherit 表示繼承父物件...

1288 幸運轉盤(一)

傳說中每乙個人都有乙個幸運轉盤,在人生的某些特殊時刻,我們會在睡夢中 良好睡眠哦 悄悄的轉動自己的幸運轉盤,轉盤的結果會影響著自己的心情,並改變自己的命運。現在到你旋轉幸運轉盤的時候了,你有乙個m m的轉盤,並且有t次機會轉動它,每一次轉動,你可以選擇它的轉動方向,並讓它相對於上一次轉動一定的角度。...