地铁建设 纪中2568 水dp

Description

某地铁沿线共设N站,可分为U(地面式)、D(地下式)和C(复合式)三种类型。为避免单调,相邻地铁站的类型不能重复。同时,由于地铁站所处环境和地质条件有所差异,每个站点按不同类型的建设成本也不尽相同。现给定各站点的三种建设成本,请计算出该地铁线的最低总造价。

Input

输入文件subway.in包含N+1行:
第1行为一个正整数,表示地铁站的总数N。
第2行到第N+1行分别包含用空格分隔的三个正整数U,D和C。其中第i+1行表示第i个地铁站按U、D 或C 类型的建设成本,1≤i≤N。

Output

输出文件subway.out只包含一个正整数,表示建成这N个地铁站所需要的最低成本。

分析

状态只有三种直接推,这dp要多暴力有多暴力

f[i][j]=min(f[i1][k]+v[j])(jk)

代码

constmaxn=200100;vardp:array[0..maxn,1..3] of int64;note:array[0..maxn,1..3] of longint;n:longint;procedure init;
vari,j,k:longint;
beginreadln(n);for i:=1 to n dobeginfor j:=1 to 3 doread(note[i,j]);readln;end;for i:=1 to n dofor j:=1 to 3 dodp[i,j]:=maxlongint;
end;function min(x,y:longint):longint;
beginif x>y then exit(y)else exit(x);
end;procedure main;
vari,j,k:longint;ans:int64;
beginfor i:=1 to 3 dodp[1,i]:=note[1,i];for i:=2 to n dofor j:=1 to 3 dofor k:=1 to 3 doif j<>k then dp[i,j]:=min(dp[i,j],dp[i-1,k]+note[i,j]);ans:=maxlongint;for i:=1 to 3 doif dp[n,i]then ans:=dp[n,i];write(ans);
end;begininit;main;
end.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部