背景stupid 家族得知在hyc家的後花園裡的**花壇處,向北走3步,向西走3步,再向北走3步,向東走3步,再向北走6步,向東走3步,向南走12步,再向西走2步( - -||)就能找到寶藏的入口,而且寶藏都是藏在山里的,必須挖出來,於是stupid家族派狗狗帶領礦工隊去挖寶藏.(hyc家的寶藏被狗狗挖走後有什麼感想?)
描述這個寶藏的製造者為了掩蓋世人耳目,他做的寶藏是沒有出口,只有入口,不少建造寶藏的人都死在裡面.現在知道寶藏總共有n個分岔口,在分岔口處是有財寶的,每個寶藏點都有乙個財富值.狗狗只帶了m個人來,而且為了安全起見,在每個分岔口,必須至少留乙個人下來,這個留下來的人可以挖寶藏(每個人只能挖乙個地方的寶藏),這樣才能保證不會迷路,而且這個迷宮有個特點,任意兩點間有且只有一條路可通.狗狗為了讓他的00開心,決定要盡可能地多挖些寶藏回去.現在狗狗的圈叉電腦不在身旁,只能求救於你了,你要知道,狗狗的終身幸福就在你手上了..(狗狗ps:00,你不能就這樣拋棄偶……)
第1行:兩個正整數n,m .n表示寶藏點的個數,m表示狗狗帶去的人數(那是一條懶狗,他自己可不做事)。(n<=1000,m<=100)
第2行:n個整數,第i個整數表示第i個寶藏的財富值.(保證|wi|輸出狗狗能帶回去的寶藏的價值。
wa幾次了。。。。。。。
典型的樹狀dp
另外,沒想到cin與scanf有這麼大的差距
**實現:
view code
1 #include2using
namespace std;34
int n,m,son[1001][1001]=,f[1001][3]=,z[1001][101]=,a[1001];56
void dfs(int k)
18 }
1920
int fenpei(int k,int sum)
32if(z[k][sum]33 z[k][sum]=max;
34return z[k][sum];
35 }
3637
38int main()
39 51
52 dfs(son[0][1]);
5354
//for(i=1;i<=n;i++)
55//
z[i][1]=a[i]; 這個錯誤害的我查了幾個小時的錯,快崩潰了!
5657 cout<0][1],m)<58
59 system("
pause
");60
return
0;61
62 }
rqnoj28 Stupid 愚蠢的寵物
題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編號是1...
PID28 Stupid 愚蠢的寵物
題鏈 題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編...
愚蠢的礦工 樹形動態規劃
一 思路 題目是多叉樹,原本想 0 0 0 3 0 1 2 0 2 1 0 3 1 但是要列舉的情況太多,就採用轉換為二叉樹的方法 1 2 3 1 讀進多叉樹tree 1001 1001 tree i 0 來記錄本節點的孩子個數 tree i j 表示節點i的第j個子節點的編號 2 轉化為二叉樹bi...