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

2021-07-15 11:57:31 字數 1828 閱讀 5972

三國志

時間限制:3000 ms | 記憶體限制:65535 kb

難度:5

描述 《三國志》是一款很經典的經營策略類遊戲。我們的小白同學是這款遊戲的忠實玩家。現在他把遊戲簡化一下,地圖上只有他一方勢力,現在他只有乙個城池,而他周邊有一些無人佔的空城,但是這些空城中有很多不同數量的同種財寶。我們的小白同學虎視眈眈的看著這些城池中的財寶。

按照遊戲的規則,他只要指派一名武將攻占這座城池,裡面的財寶就歸他所有了。不過一量攻占這座城池,我們的武將就要留守,不能撤回。因為我們的小白手下有無數的武將,所以他不在乎這些。

從小白的城池派出的武將,每走一公理的距離就要消耗一石的糧食,而他手上的糧食是有限的。現在小白統計出了地圖上城池間的道路,這些道路都是雙向的,他想請你幫忙計算出他能得到 的最多的財寶數量。我們用城池的編號代表城池,規定小白所在的城池為0號城池,其他的城池從1號開始計數。

輸入 本題包含多組資料:

首先,是乙個整數t(1<=t<=20),代表資料的組數

然後,下面是t組測試資料。對於每組資料報含三行:

第一行:三個數字s,n,m

(1<=s<=1000000,1<=n<=100,1<=m<=10000)

s代表他手中的糧食(石),n代表城池個數,m代表道路條數。

第二行:包含m個三元組行 ai,bi,ci(1<=a,b<=n,1<=c<=100)。

代表ai,bi兩城池間的道路長度為ci(公里)。

第三行:包含n個元素,vi代表第i個城池中的財寶數量。(1<=v<=100)

輸出 每組輸出各佔一行,輸出僅乙個整數,表示小白能得到的最大財富值。

樣例輸入

2 10 1 1

0 1 3

2 5 2 3

0 1 2 0 2 4 1 2 1

2 3

樣例輸出

2 5

** 鄭州大學校賽題目

分析:

此題就是乙個最短路加01揹包的應用。從0到其他每個城市的距離就是所要的髮費,每個城市的財富就是價值,而且總金額一定,典型的01揹包問題。

我們用spfa(bellman的佇列優化)求出最短路,再用一維滾動陣列的方法求解01揹包問題。

一想好就立刻把**寫出來了,一交wa立馬懵逼,結果發現是沒有存雙向邊

ac**:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=110;

const

int inf=10000100;

struct edge

;int dis[maxn];

int val[maxn];

int inq[maxn];

vector

v[maxn];

queue

q;int n,s;

int bb[1000010];

void spfa(int v0)}}

}}void maxvalue()

}printf("%d\n",bb[s]);

}int main()

for(int i=1;i<=n;i++)

scanf("%d",&val[i]);

spfa(0);

maxvalue();

}return

0;}

《悟空三國志》隱私政策

悟空三國志尊重和保護利用使用者的隱私所有的服務。為了向您提供更準確,更人性化的服務,將悟空三國志使用和披露按照本隱私政策您的個人資訊。但是悟空三國志將是乙個高度的勤勉,審慎義務對待這些資訊。除本隱私政策另有規定外,未經您的許可之前,悟空三國志資訊將不會被披露或向第三方提供。悟空三國志更新本隱私政策不...

三國志5實用武將

quote 排除使用幻術,妖術,仙術。1.呂布,號為飛將,名不虛傳,能突善射,而且單挑更是無人能及,守城的時候真有一夫當關,萬夫莫開的感覺。2.趙雲,文武雙全,能力均衡,弓箭能力強,而且機動力很好,能攻能守,魅力也很高,招募兵馬,人才也不錯。3.孫堅,江東領袖,在水上無人能敵,弓箭有一定能力,魅力很...

三國志IX反 連合的條件

三國志ix反 連合的條件 成立反 連合 條件 遊戲開始一年後 與目標勢力君主非親子關係 與目標勢力關係為 中立 以下 即中立 不和 險惡 與目標勢力領土接壤,支配都市乙個以上 符合2,3,4條件的勢力最少有三個 不計異民族 結果 反 連合盟主 連合中 信望 最高勢力會被推舉為盟主 連合盟主勢力 信望...