NOIP2011模擬9 17 地鐵建設

2021-07-16 18:31:03 字數 1473 閱讀 4498

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個地鐵站所需要的最低成本。

sample input

1 99 99

99 1 99

99 99 1

sample output

data constraint

hint

對於20%的資料,n≤10;

對於40%的資料,n≤1000;

對於100%的資料,n≤200000,1≤u, d, c≤10000。

分析:

最簡單的dp。設f[i,j]為第i個地鐵站選第j種型別的最小值,a[i,j]表示第i個地鐵站選第j種型別的代價。

f[i,j]=max(f[i-1,k]+a[i,j])(j<>k)

**:

const

maxn=200001;

var f:array [0..maxn,1..3] of longint;

n,ans,i,j,k:longint;

a:array [0..maxn,1..3] of longint;

function

min(x,y:longint):longint;

begin

if x>y then

exit(y)

else

exit(x);

end;

begin

readln(n);

for i:=1

to n do

for j:=1to3

doread(a[i,j]);

for i:=1

to n do

for j:=1to3

do f[i,j]:=maxlongint;

for i:=1

to n do

begin

for j:=1to3

dofor k:=1to3

dobegin

if j<>k then

f[i,j]:=min(f[i,j],f[i-1,k]+a[i,j]);

end;

end;

ans:=min(f[n,1],f[n,2]);

ans:=min(ans,f[n,3]);

writeln(ans);

end.

NOIP2011模擬考試總結

這兩天的考了noip2011的6道題,600分的題大致得了420分左右。a了day1的t1,t2,day2的t1。這次模擬我感覺沒有發揮到自己的飽和水平,犯了非常傻比的錯。day1的第三題讀豎列時,題目說了以零結尾,我還手賤寫了個y 7,這樣如果這一列是滿的話,最後乙個0會被下一列讀進去。把y 7刪...

NOIP2011 模擬 鋪地毯

題目描述 description 為了準備乙個獨特的頒獎典禮,組織者在會場的一片矩形區域 可看做是平面直角座標系的第一象限 鋪上一些矩形地毯。一共有n 張地毯,編號從1 到n。現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成後,組織者想知...

NOIP2011模擬11 1 釣魚

我們把釣魚的過程放在座標系裡來考慮。圖中藍色的點為船,初始時它的座標記為 ax,y 河深為y,河寬為x。某個時刻會從左邊界或右邊界遊出來一條魚 左邊的往右邊遊,右邊的往左邊遊 即魚游出來時的橫座標為0或x,這條魚每秒會游d個單位長度,魚的長度為l。初始時刻為0,對於每個時刻x,船可以選擇花費1s向左...