暑假集訓Day13 公升降梯上

2022-02-02 01:58:00 字數 1126 閱讀 6083

開啟了公升降梯的動力之後,探險隊員們進入了公升降梯執行的那條豎直的隧道,映入眼簾的是一條直通塔頂的軌道、一輛停在軌道底部的電梯、和電梯內一桿控制電梯公升降的巨大手柄。

nescafe之塔一共有n層,公升降梯在每層都有乙個停靠點。手柄有m個控制槽,第i個控制槽旁邊標著乙個數ci,滿足c10,表示手柄扳動到該槽時,電梯將上公升ci層;如果ci<0,表示手柄扳動到該槽時,電梯將下降-ci層;並且一定存在乙個ci=0,手柄最初就位於此槽中。注意公升降梯只能在1~n層間移動,因此扳動到使公升降梯移動到1層以下、n層以上的控制槽是不允許的。

電梯每移動一層,需要花費2秒鐘時間,而手柄從乙個控制槽扳到相鄰的槽,需要花費1秒鐘時間。探險隊員現在在1層,並且想盡快到達n層,他們想知道從1層到n層至少需要多長時間?

第一行兩個正整數n、m。

第二行m個整數c1、c2……cm。

輸出乙個整數表示答案,即至少需要多長時間。若不可能到達輸出-1。

6 3

-1 0 2

19
#includeusing namespace std;

const int maxn = 1e3+10;

int n,m,dp[maxn][maxn],dp2[maxn][maxn],c[maxn];

int ans=0x3f3f3f3f;

int x0;

int main()

memset(dp,0x3f,sizeof(dp));//初始化

dp[1][x0]=0;//初始化,在一層x0的位置顯然是0

for(int i = 1;i <= m;++i)dp[1][i] = abs(i-x0);//還是初始化

for(int i = 2;i <= n;++i)

} }for(int i = n;i >= 2;--i)

} }for(int i = 2;i <= n;++i)

} }for(int i = 1;i <= m;++i)ans=min(ans,dp[n][i]);//尋找區間最值

if(ans == 0x3f3f3f3f)printf("-1\n");//到不了第n層

else cout

}

前端學習Day13

一.如果考慮相容最小高度的設定 了解 1.正常專案中 最小高度直接用min height即可。如果考慮相容 min height 在ie6不相容,ie6預設把height解析成最小高度。注 如果height 和 min height同是出現,執行height固定高度。2.最小高度的相容設定方法 了解...

每日演算法 day 13

那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.2.25 記錄下來自己做題時得思路,並不一定是最優解 暴力。應該會有更好得方法 i...

每日總結 Day13

activity跳轉 如果分屏之後,想跳轉進入的目標activity展示在另一半的螢幕中,則需要設定以下flag intent.addflags intent.flag activity new task intent.flag activity launch adjacent 明天將繼續這一塊的工...