地鐵建設 紀中2568 水dp

2021-07-16 16:58:34 字數 1477 閱讀 4368

某地鐵沿線共設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 表示區間...