D 和諧(最短路 01揹包)

2021-10-08 13:23:13 字數 2237 閱讀 9155

自2023年以來,當美國的曼哈頓專案小組引爆了第一顆核彈時,全球的核**數量急劇增加。

如今,fzu的乙個名叫aekdycoin的瘋狂男孩擁有核**,想要毀滅我們的世界。幸運的是,我們神秘的間諜網路已經得到了他的計畫。現在,我們需要阻止它。

但這項艱鉅的任務顯然並不容易。首先,我們知道,核**的作業系統由一些連線的電站組成,它們構成了乙個龐大而複雜的電網。每個電站都有它的功率值。要啟動核**,它必須消耗電網一半的電力。所以首先,我們需要將一半以上的能量分散。我們的坦克已經為我們在基地的行動做好了準備(id是0),我們必須在路上駕駛它們。至於發電站,只有當我們的坦克停在那裡時,我們才能控制它們。1單位距離花費1單位油。我們有足夠的坦克使用。

現在我們的指揮官想知道這次行動的最小石油成本。

input

輸入資料的第一行包含乙個整數t,表示檔案中測試點的數量。

對於每組資料,第一行有兩個整數n(1<= n<= 100), m(1<= m<= 10000),指定站點的數量(id為1、2、3…n),以及站點之間的道路數量(雙向)。

接下來的m行,每一行都有三個整數 st(0<= st<= n), ed(0<= ed<= n), dis(0<= dis<= 100),指定起始點、結束點和它們之間的距離。

接下來的n行,每一行都有乙個整數pow(1<= pow<= 100),按id順序表示各電站的功率。

output

輸出最低的石油成本。

若不存在則輸出 「impossible」(不帶引號).

sample input

22 3

0 2 9

2 1 3

1 0 213

2 12 1 313

sample output

5impossible

注意:是要選擇1~n的點放坦克,而不是路過而已;

然後這裡求最短路用的是floyd,求出0到1~n各個點的最短路,然後01揹包選點;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

typedef

long

long ll;

const

int maxn =

200;

int mz[maxn]

[maxn]

,path[maxn]

[maxn]

,val[maxn]

;int n,m;

void

floyd()

}//忽略get_path函式以及path陣列

void

get_path

(int u,

int v,vectorint,

int>>

&p))

;else

}int

main()

else

}int sum=0;

for(

int i=

1;i<=n;i++

) sum/=2

;floyd()

;int temp=0;

for(

int i=

1;i<=n;i++)if

(mz[0]

[i]!=inf)

temp+

=mz[0]

[i];

int dp[

10005];

memset

(dp,0,

sizeof

(dp));

for(

int i=

1;i<=n;i++

)for

(int j=temp;j>=mz[0]

[i];j--

)bool flag=0;

for(

int i=

0;i<=temp;i++)if

(dp[i]

>sum)if(

!flag)

printf

("impossible\n");

}return0;

}

HDOJ3339 最短路 01揹包

題意 給出電站之間的路徑長度和每個電站的電量,需要派出坦克去攻占電站,以控制多一半的電量 要比一半多,因為這個wa了一次 問最少走多少路徑,坦克數量足夠多,乙個坦克只能控制乙個電站。思路 用floyd求出起點 0點 到所有電站的距離,當做揹包物品的價值,然後以每個電站的發電量作為揹包物品的容量,進行...

Present 神奇 揹包 最短路

先設 p1p 1 表示最小的 pp 當 pxp x 使用了 p1p 1 次時,可以用 pxp x 次 p1p 1 替代,舉個例子,假如當前選物品的情況是 i 2n p 1 1 pii 2 n p1 1 p i 此時只要在 x 2,n x 2 n 中再選出任意乙個物品 pxp x 則 p1p 1 個p...

三國志(最短路SPFA 01揹包)

三國志 時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 三國志 是一款很經典的經營策略類遊戲。我們的小白同學是這款遊戲的忠實玩家。現在他把遊戲簡化一下,地圖上只有他一方勢力,現在他只有乙個城池,而他周邊有一些無人佔的空城,但是這些空城中有很多不同數量的同種財寶。我們的小白同學...