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向左...