演算法競賽寶典 動態規劃 魔法石礦

2021-08-17 23:34:05 字數 1196 閱讀 7903

【題目描述】魔法石礦(mine.cpp/c/pas)

為了找到回家的路,張琪曼施展魔法,從高維空間召喚出了一種叫作「讀者」的生物,據說「讀者」這種生物無所不能,他們可以穿越時空的限制,聆聽到歷史的聲音、巨人的吶喊。但這次「讀者」卻很嚴肅地警告她們,從遠古起就陰魂不散的天頂星人已衝破封印再次降臨到了這個空間,她們若不早做準備,不僅她們所在的這個世界將變成修羅場,連「讀者」所在的時空也會受到牽連。最後「讀者」交給她們一張藏寶圖希望她們能收集足夠多的魔法石能量以對抗天頂星人的進攻。已知藏寶圖上標有若干個排成一條直線的魔法石礦,每個礦裡有一定數量的魔法石,如表所示。

同時每個礦中都有一張說明書,說明在挖完此礦的魔法石後還可繼續挖哪些礦,如圖所示。

挖礦規則為可以從任何乙個礦開始,到任何乙個礦結束,同時挖完這個礦中的魔法石之後,可以選擇它可繼續挖的礦之一繼續挖,但只能選擇一條。如挖完1礦後,可挖2礦,再挖5礦,6礦,……但只可以向右挖,不能回頭向左挖。請問如何挖才能挖出最多的魔法石?

【輸入格式】

第一行為乙個整數n,表示有n(n≤1000)個礦。第二行為n個整數,表示這n個礦的魔法石數。隨後n行表示每個礦挖完後還能再挖哪些礦。

【輸出格式】

最多挖出的魔法石數。

【輸入樣例】

31 1 1

1 2 3

2 33

【輸出樣例】

3//一種類似貪心的思想,這個解法跟標答的不知道有沒有一樣,因為這是我自己的解法

//這種思考方法就是:先做好預處理,把字元都處理好,便於後面的直接利用

//主要思想:在k節點時,尋找所有能夠到達k節點的權值的最大的節點,即可!

#include#include#include#includeconst int n=10000+10;

using namespace std;

int dp[n];

int a[n][n];

int mine[n];

bool isnumber(char c)

int main()

while(c!='\n');

} int ans=0;

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

mine[i]+=max;

ans=max(mine[i],ans);

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

} return 0;

}

動態規劃 魔法石礦

動態規劃 魔法石礦 時間限制 1 sec 記憶體限制 64 mb 提交 116 解決 27 提交 狀態 命題人 admin 題目描述 為了找到回家的路,張琪曼施展魔法,從高維空間召喚出了一種叫作 讀者 的生物,據說 讀者 這種生物無所不能,他們可以穿越時空的限制,聆聽到歷史的聲音 巨人的吶喊。但這次...

演算法競賽寶典 動態規劃 抄近路

抄近路 shortline.cpp c pas 題目描述 最近不知道怎麼回事,感覺我們這個城市變成了乙個神奇的地方,有時在路上走著走著人就消失了!走著走著突然又有人出現了!你以為這是 寂靜嶺 生化危機 行屍走肉 拍攝地?哎,先不說了,這該死的霧霾又讓我們迷路了。李旭琳發愁地說。張琪曼和李旭琳每天要從...

演算法競賽寶典 遞迴演算法

p1498 南蠻圖騰 include include include using namespace std int n char a 5 5 b 3000 10 3000 10 int main p1049 裝箱問題 include using namespace std int a 30 1 i...