某地鐵沿線共設n站,可分為u(地面式)、d(地下式)和c(複合式)三種型別。為避免單調,相鄰地鐵站的型別不能重複。同時,由於地鐵站所處環境和地質條件有所差異,每個站點按不同型別的建設成本也不盡相同。現給定各站點的三種建設成本,請計算出該地鐵線的最低總造價。
輸入檔案subway.in包含n+1行:
第1行為乙個正整數,表示地鐵站的總數n。
第2行到第n+1行分別包含用空格分隔的三個正整數u,d和c。其中第i+1行表示第i個地鐵站按u、d 或c 型別的建設成本,1≤i≤n。
輸出檔案subway.out只包含乙個正整數,表示建成這n個地鐵站所需要的最低成本。
狀態只有三種直接推,這dp要多暴力有多暴力 f[
i][j
]=mi
n(f[
i−1]
[k]+
v[j]
)(j≠
k)
const
maxn=200100;
var dp:array[0..maxn,1..3] of int64;
note:array[0..maxn,1..3] of longint;
n:longint;
procedure
init;
var i,j,k:longint;
begin
readln(n);
for i:=1
to n do
begin
for j:=1to3
doread(note[i,j]);
readln;
end;
for i:=1
to n do
for j:=1to3
do dp[i,j]:=maxlongint;
end;
function
min(x,y:longint):longint;
begin
if x>y then
exit(y)
else
exit(x);
end;
procedure
main;
var i,j,k:longint;
ans:int64;
begin
for i:=1to3
do dp[1,i]:=note[1,i];
for i:=2
to n do
for j:=1to3
dofor k:=1to3
doif j<>k then dp[i,j]:=min(dp[i,j],dp[i-1,k]+note[i,j]);
ans:=maxlongint;
for i:=1to3
doif dp[n,i]then ans:=dp[n,i];
write(ans);
end;
begin
init;
main;
end.
餐桌 紀中 1237 水 數學
description 你家剛買了一套新房,想邀請朋友回來慶祝,所以需要乙個很大的舉行餐桌,餐桌能容納的人數等於餐桌的周長,你想買乙個能容納最多人的餐桌,餐桌的邊必須跟房間的邊平行。給你的房間的設計,計算最多能邀請的客人數。input 第一行包含兩個整數r和c 1 r,c 2000 表示房子的長和寬...
洪水 紀中1235 bfs 水
題目大意 一天,乙個畫家在森林裡寫生,突然爆發了山洪,他需要盡快返回住所中,那裡是安全的。森林的地圖由r行c列組成,空白區域用點 表示,洪水的區域用 表示,而岩石用 x 表示,另畫家的住所用 d 表示,畫家用 s 表示。有以下幾點需要說明 1 每一分鐘畫家能向四個方向移動一格 上 下 左 右 2 每...
區間 紀中1382 dp
alice收到一些很特別的生日禮物 區間。即使很無聊,alice還是能想出關於區間的很多遊戲,其中乙個是,alice從中選出最長的不同區間的序列,其中滿足每個區間必須在禮物中,另序列中每個區間必須包含下乙個區間。程式設計計算最長序列的長度。輸入檔案第一行包含乙個整數n 1 n 100000 表示區間...