蒜頭君的花園裡有 n 個花盆,每個花盆可以種一株花,現在花椰妹給了蒜頭君三種種花的方案但是花椰妹的每種方案種的都是同一種花,只是形狀不同
全部種 a 花,第 i 盆花的**為 ai
全部種 b 花,第 i 盆花的**為 bi
全部種 c 花,第 i 盆花的**為 ci
可是蒜頭君覺得整個花園都是同一種花不好看,但是他又不想浪費了花椰妹的好意
所以他決定依舊是按照花椰妹的方案來買花,也就是說第 iii 盆花只有三個選項:ai,bi,ci , 但是他希望相鄰的兩盆花不是同一種花,
所以他希望你可以幫他計算一下,最少需要花多少錢?
第一行只有乙個整數 nnn,表示共有 nnn 個花盆。
第二行有 n 個正整數 ai
第三行有 n 個正整數 bi
第四行有 n 個正整數 ci
輸出僅有一行,該行只有乙個整數,表示最小花費。
對於 30% 的資料,1≤n≤10
對於 70%的資料,11≤n≤30
對於 100%的資料中,1≤n≤100000,1≤ai,bi,ci≤100
輸出時每行末尾的多餘空格,不影響答案正確性
樣例輸入
5樣例輸出1 3 1 2 2
1 2 3 4 3
4 2 1 5 3
9
設v[0/1/2]為前 i 盆花第 i盆花買a,b,c三種的情況,那麼分別進行狀態轉移即可,v[0][i]=min(v[1][i-1],v[2][i-1])+a[i];
v[1][i]=min(v[0][i-1],v[2][i-1])+b[i];
v[2][i]=min(v[0][i-1],v[1][i-1])+c[i];
#include#includeusing namespace std;
int v[5][100005];
int main()
int sum=min(v[0][n-1],v[1][n-1]);
sum=min(sum,v[2][n-1]);
cout
}
蒜頭君面試 計蒜客
蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n nn 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數 n 1 n 100000 n 1 le n le 100000 n 1 n 1000 ...
計蒜客 蒜頭君倒水
問題描述 蒜頭君倒了 2 杯熱水在杯子裡面,第一杯裡面有 a 毫公升,第二杯裡面有 b 毫公升。水太熱了,蒜頭君決定通過輪流倒水的方式來讓水冷下來。每次倒水蒜頭君把第一杯的 x 的水倒入第二杯,把第二杯的 y 的水倒入第一杯 蒜頭君有奇特的方法,能讓這一過程是同是發生的,沒有先後之分 蒜頭君一直重複...
計蒜客 蒜頭君回家
樣例輸入 8 10 p.p t s 樣例輸出 思路用兩次bfs,第一次計算出起點到p的距離,第二次計算出t到p的距離,然後迴圈取最小值。但是wa了很多次,找了很久,發現是vis判斷的問題,導致乙個資料更新多次。ac include include include include using name...