前言:好久沒做dp,又變菜了。。。
數字三角形 number ********s
思路:由題很容易可以看出狀態轉移方程:dp[i][j]=cnt[i][j]+max(cnt[i+1][j],cnt[i+1][j+1]).
ac**:
#include
#include
#include
#include
#include
using
namespace std;
#define int long long
int cnt[
1005][
1005];
signed
main()
}for
(int i = t -
2; i >=
0; i--)}
cout << cnt[0]
[0]<< endl;
return0;
}
挖地雷
思路:設dp[i]為從i地窖挖能挖到的地雷最大數。
先判斷i地窖到j地窖存不存在路,存在則dp[i]=max(dp[i],cnt[i]+dp[j]),不存在的話
dp[i]=max(dp[i],cnt[i]),但遍歷的時候是根據存不存在路判斷遍歷,這樣就很可能會漏遍歷最後乙個地窖(因為最後乙個地窖並沒有直接的給出與其他地窖的連通關係),所以需要在最後特判一下最後乙個地窖。路徑的話用乙個陣列存該節點前驅節點,隨著遍歷實時更新即可。
ac**:
#include
//挖地雷
#include
#include
#include
#include
using
namespace std;
#define int long long
int cnt[25]
;int ret[25]
[25];
int dp[25]
;int pos[25]
;signed
main()
}int ans =0;
int beg =1;
if(t ==1)
for(
int i = t -
1; i >=
1; i--
)else
dp[i]
=max
(dp[i]
, cnt[i]
+ cnt[j]);
if(dp[i]
!= k) pos[i]
= j;
int ll = ans;
ans =
max(ans, dp[i]);
if(ans != ll) beg = i;
//記錄起始點
}else}}
if(ans < cnt[t]
) cout << beg <<
" ";
for(
int i = beg; pos[i]!=0
&& pos[i]
!= i; i = pos[i]
) cout << pos[i]
<<
" "; cout << endl;
cout << ans << endl;
return0;
}
採藥
思路:01揹包模板題,不用解釋。
ac**:
#include
//採藥
#include
#include
#include
#include
using
namespace std;
#define int long long
const
int mod =
80112002
;int t[
1005
], w[
1005];
int dp[
1005][
1005];
signed
main()
for(
int i =
1; i <= b; i++
)else dp[i]
[j]= dp[i -1]
[j];}}
cout << dp[b]
[a]<< endl;
return0;
}
瘋狂的採藥
思路:完全揹包模板題,但這裡只能用一維陣列形式,因為二維會爆的很慘。。。
ac**:
#include
//瘋狂的採藥
#include
#include
#include
#include
using
namespace std;
#define int long long
int t[
10005
], w[
10005];
int dp[
10000005];
signed
main()
} cout << dp[a]
<< endl;
return0;
}
5倍經驗日
思路:01揹包模板題,唯一區別就是在藥物不夠的時候要加上失敗的經驗值,注意最後結果要乘5.
ac**:
#include
//5倍經驗日
#include
#include
#include
#include
using
namespace std;
#define int long long
int ls[
1005
], wi[
1005
], us[
1005];
int dp[
1005];
signed
main()
else dp[j]
= dp[j]
+ ls[i];}
} cout << dp[x]*5
<< endl;
return0;
}
總結:這個題單除了個別題不想看之外,其他題對於蒟蒻來講都是很友好的了,蒟蒻不易,且行且珍惜。 動態規劃 洛谷 過河卒
第 dp i j 個位置到達的可能性是第 dp i 1 j 個位置方案數 第 dp i j 1 個位置的方案數 題目中馬以 日 字形沿各方向跳出的點才是題目中所謂馬控制的九個點,而不是馬座標周圍的九個點 題目的座標系是以第四象限為平面,卒可向下或向右 dfs求路徑總數要設定邊界 1 到達目的地結束 ...
洛谷 教主的花園 動態規劃
教主有著乙個環形的花園,他想在花園周圍均勻地種上n棵樹,但是教主花園的土壤很特別,每個位置適合種的樹都不一樣,一些樹可能會因為不適合這個位置的土壤而損失觀賞價值。教主最喜歡3種樹,這3種樹的高度分別為10,20,30。教主希望這一圈樹種得有層次感,所以任何乙個位置的樹要比它相鄰的兩棵樹的高度都高或者...
洛谷官方dp題單
這題是一道很好的dp入門練手題 動 f x y max f x 1 y f x 1 y 1 a x y 首先,這題為什麼會想到記憶化?知道的人直接跳過 在dfs每種情況是,可能這個點之前已經搜過了,沒必要再去搜尋了,因此不如儲存記住,就沒必要再去dfs了。me的文章 一道裸的01揹包,特別簡單。不過...