思路:我們用dp[i]來表示第i個元素存走到i時最少經過的水坑數。
dp[i]明顯可以從 i-1 i-2 i-3得來。那麼我們肯定要走跨過水坑數最小的那一條path,所以我們每次可以從這3條路徑中找出最小的一條路徑+判斷當前的目的地是否有水坑。
核心**
for
(int i =
4; i <= n; i++
) dp[i]
= dp[i]
+min
(min
(dp[i -3]
, dp[i -2]
), dp[i -1]
);
/**
* from:
* qingdao agricultural university
* created by xiangwangacmer
* date : 2019-10-03-18.21.09
* talk is cheap.show me your code.
*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
const ll maxn =
1e6+5;
const ll minn =
1e9+5;
const ll mod =
1000000007
;const
int inf =
0x3f3f3f3f
;const
long
long limit =
4294967295ll
;vector<
int>v[maxn]
;int dp[maxn]
;vector<
int>g[maxn]
;bool row[maxn]
, col[maxn]
;bool flag =0;
char a[maxn]
;queue<
int>q;
intmain()
for(
int i =
4; i <= n; i++
) dp[i]
= dp[i]
+min
(min
(dp[i -3]
, dp[i -2]
), dp[i -1]
);cout << dp[n]
<< endl;
return0;
}
洛谷AT360 雨上 dp
題目翻譯 給定一條長為n的路,每一單位的路段可能為 x 水坑 或 空地 要求經過最少的水坑到達n這裡,每一步可以走1 2 3單位長的距離。感謝 xusiyuan 提供的翻譯 題目描述 僕 家 大學 道路 結 道路 區間 分 道路 一行 文字列 表 各文字 1 區間 相當 1文字目 家 前 區間,最後...
ACM DAG上的動態規劃
有向無環圖dag 演算法中有時稱有向無環圖為dag directed acyclic graph 所謂有向無環圖是指 任意一條邊有方向,且不存在環路的圖。有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 這個題目可以抽象為dag,即x有到y的...
DAG上的動態規劃
dag模型 有n個矩形,每個矩形用兩個整數a,b描述,表示長和寬,矩形 a,b 可以巢狀在矩形 c,d 中,當且僅當a小於c,b小於d或b小於c,a小於d。要解決的問題就是從眾多矩形中選出最多的矩形,使其可以按要求排成一列,若有多解,矩形編號的字典序要盡可能小。分析 按照書上的分析很簡單易懂,也容易...