hihocoder 1037 數字三角形

2021-07-31 14:39:11 字數 1848 閱讀 7847

時間限制:10000ms

單點時限:1000ms

記憶體限制:256mb

問題描述

小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色、奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當地的迷宮節活動。迷宮節裡展覽出來的迷宮都特別的有意思,但是小ho卻相中了乙個其實並不怎麼像迷宮的迷宮——因為這個迷宮的獎勵非常豐富~

於是小ho找到了小hi,讓小hi幫助他獲取盡可能多的獎品,小hi把手一伸道:「迷宮的介紹拿來!」

小ho選擇的迷宮是乙個被稱為「數字三角形」的n(n不超過200)層迷宮,這個迷宮的第i層有i個房間,分別編號為1..i。除去最後一層的房間,每乙個房間都會有一些通往下一層的房間的樓梯,用符號來表示的話,就是從第i層的編號為j的房間出發會有兩條路,一條通向第i+1層的編號為j的房間,另一條會通向第i+1層的編號為j+1的房間,而最後一層的所有房間都只有一條離開迷宮的道路。這樣的道路都是單向的,也就是說當沿著這些道路前往下一層的房間或者離開迷宮之後,小ho沒有辦法再次回到這個房間。迷宮裡同時只會有乙個參與者,而在每個參與者進入這個迷宮的時候,每個房間裡都會生成一定數量的獎券,這些獎券可以在通過迷宮之後兌換各種獎品。小ho的起點在第1層的編號為1的房間,現在小ho悄悄向其他參與者弄清楚了每個房間裡的獎券數量,希望小hi幫他計算出他最多能獲得多少獎券。

提示一:盲目貪心不可取,搜尋計算太耗時

提示二:記憶深搜逞神威,寬度優先解難題

提示三:總結歸納提公式,減少冗餘是真理

輸入 每個測試點(輸入檔案)有且僅有一組測試資料。

每組測試資料的第一行為乙個正整數n,表示這個迷宮的層數。

接下來的n行描述這個迷宮中每個房間的獎券數,其中第i行的第j個數代表著迷宮第i層的編號為j的房間中的獎券數量。

測試資料保證,有100%的資料滿足n不超過100

對於100%的資料,迷宮的層數n不超過100

對於100%的資料,每個房間中的獎券數不超過1000

對於50%的資料,迷宮的層數不超過15(小ho表示2^15才3萬多呢,也就是說……)

對於10%的資料,迷宮的層數不超過1(小hi很好奇你的邊界情況處理的如何?~)

對於10%的資料,迷宮的構造滿足:對於90%以上的結點,左邊道路通向的房間中的獎券數比右邊道路通向的房間中的獎券數要多。

對於10%的資料,迷宮的構造滿足:對於90%以上的結點,左邊道路通向的房間中的獎券數比右邊道路通向的房間中的獎券數要少。

輸出 對於每組測試資料,輸出乙個整數ans,表示小ho可以獲得的最多獎券數。

樣例輸入

5 2

6 4

1 2 8

4 0 9 6

6 5 5 3 6

樣例輸出

28解題思路:動態規劃

首先已知數字三角形最後一行的資料,為邊界條件,

找出狀態轉移方程 dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1])

#include 

#include

using

namespace

std;

int main()

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

dp[n][i]=a[n][i];

for(int i=n-1;i>0;i--)

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

dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]);

printf("%d\n",dp[1][1]);

return

0;}

hihoCoder 1037 數字三角形

題目 樣例輸入 5 迷宮的層數 26 4 1 2 8 4 0 9 6 6 5 5 3 6 結果 28 思路 動態規劃 maze i,j max maze i 1,j maze i 1,j 1 原始碼 1 include 2 using namespace std 34 static int maze...

hihocoder 1520 古老數字

時間限制 20000ms 單點時限 2000ms 記憶體限制 256mb 小hi有一張紙條,上面寫著乙個長度為n的整數。由於年代過於久遠,其中有些位置已經看不清了,我們用 來代替這個位置。小hi印象中記得這個數字除以x的餘數為y,他想知道這個數最小可能是多少?注意這個整數的首位不能是0,除非它本身等...

Hihocoder 1691 數字遊戲 思維

廣搜或深蒐會超時,我用優化過的廣搜超時了。設原陣列的為 x x 全排列中的某個陣列為 y role presentation y y存在這樣的事實 對於原陣列 x x 的全排列,對每一種排列都可以經過操作2變成目標陣列 y role presentation y y。這樣能夠覆蓋所有情況,保證能得到...