題目翻譯
給定一條長為n的路,每一單位的路段可能為 x (水坑)或 . (空地),要求經過最少的水坑到達n這裡,每一步可以走1、2、3單位長的距離。
感謝@xusiyuan 提供的翻譯
題目描述
僕の家から大學までは***の道路で結ばれている.道路は區間に分けることができ,ここでは,道路を一行の文字列で表すことにする.各文字が1つの區間に相當し,1文字目が家の前の區間,最後の文字が大學の前の區間を表している.
ここで,各文字の意味は次のとおりである.
. : 普通の區間
x : 水たまりのある區間
僕は家の前の區間からスタートし大學へ向かう.僕は現在位置から 1 1 1 つ, 2 2 2 つ,もしくは 3 3 3 つ先の區間(大學のある方向)へ進むことができる.もし,移動した先の區間に水たまりがある場合,僕は水たまりを踏むはめになる.買ったばかりの靴を汚したくないので,なるだけ水たまりを避けたい.また,大學の前の道路を超えて移動するようなことはできない.
家の前の道路から大學の前の道路まで適切な進み方で向かうとき,最低限踏まなければならない水たまりの數を求めてほしい.
輸入格式
入力は以下の形式で標準入力から與えられる.
$ n $
$ s $
1 1 1 行目に區間の數を表す n n n ( 3 ≦ n ≦ 100 3\ ≦\ n\ ≦\ 100 3 ≦ n ≦ 100 ) が與えられる.
2 2 2 行目には, n n n 文字の文字列 s s s が與えられる.これらは道路の區間のデータである.
s s s に出現する文字は '.', 'x' のいずれかであり,意味は上に記した通りである.
s s s の最初と最後の文字は必ず '.' である.
輸出格式
最低限踏まなければならない水たまりの數を標準出力に 1 1 1 行で出力せよ.
なお、最後には改行を出力せよ.
輸入輸出樣例
輸入 #1
5.***.
輸出 #1
輸入 #2
10.x.******.
輸出 #2
輸入 #37…
輸出 #3
dp遍歷一遍就行了
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
int dp[
30001];
char a[
30001];
intmin1
(int x,
int y,
int z)
intmain()
for(
int i =
3; i < n; i++
)else
} cout << dp[n -1]
<< endl;
}
AT360 雨上 動態規劃
思路 我們用dp i 來表示第i個元素存走到i時最少經過的水坑數。dp i 明顯可以從 i 1 i 2 i 3得來。那麼我們肯定要走跨過水坑數最小的那一條path,所以我們每次可以從這3條路徑中找出最小的一條路徑 判斷當前的目的地是否有水坑。核心 for int i 4 i n i dp i dp ...
洛谷dp記錄
線性dp,分開處理資料 include using namespace std const int n 300010 int m,s,t,dp n dpt n 分開計算跑步還是等待 intmain 能閃現就閃現 else 不能閃現就都記錄下來 for int i 1 i t i cout no en...
洛谷 AT763 感雨時刻 整理
雨 降 時刻 降水量 並 重要 今 11 日 雨 降 時刻 関 見 整理 雨 降 時刻 調 思 整理 以下 規則 従 行 雨 降 時刻 整理 降 始 時刻 早 順番 降 始 時刻 降 終 時刻 區切 出力 際 連続 11 雨 11 行 出力 時刻 形式 入力 同 形式 用 出力 末尾 改行 入 第一...