張老師的旅行

2022-05-29 19:12:17 字數 1134 閱讀 7008

張老師的旅行

題解:區間dp。

\(區間dp的基本解題方法:列舉長度+列舉起點(那麼終點根據長度也就知道了)+列舉分割點\)

但是本題並不需要列舉分割點,因為需要花費時間最短一定,那麼一定是從所列舉的區間的一邊一直走到另一邊,那麼是從左走到右還是從右走到左呢,這時我們就想到了dp開一維來放0,1,其中0表示從右到左,1表示從左到右。另外再開兩維分別表示區間的左端點和右端點,根據題目\(n\)資料的大小,我們開\(dp\left [ 1000\right ]\left [ 1000\right ]\left [ 2\right ]\)

\(dp\left [ i\right ]\left [ j\right ]\left [ 0\right ]:表示從j到i的最短時間\)

\(dp\left [ i\right ]\left [ j\right ]\left [ 1\right ]:表示從i到j的最短時間\)

具體轉移畫圖是很容易理解的,具體見**:

1 #include 2

using

namespace

std;

3 typedef long

long

ll;4

const

int maxn = 1e3+10;5

const

int inf = 0x3f3f3f3f;6

const ll mod=1e9+7;7

8int dp[maxn][maxn][2];9

intpos[maxn],t[maxn];

10int

n,st;

1112

intmain()

1323}24

25for(int len=1;len)41}

42int ans=min(dp[1][n][0],dp[1][n][1

]);43

if( ans==inf ) printf("

-1\n");

44else printf("

%d\n

",ans);

45return0;

46 }

C 張老師的旅行 區間DP

題意 有n個直線排列的城市 可以看作是一條從原點到正半軸的x軸 a i 表示i城市在這條x軸上的位置 有每乙個城市所需到達的最低時間。問 能否在規定時間內訪問所有的城市,訪問的最少時間為多少?如果不能的話,輸出 1 思路 按題目中給出,有乙個起點。我們就得從這個起點向左右走來列舉出走到乙個 l,r ...

張老師數數

張老師需要用數字來統計學生們的得分情況,但阿拉伯數字已經不能滿足他的要求了,所以想請你幫忙將學生的成績轉換成羅馬數字。羅馬數字是由七個不同的符號來表示 i,v,x,l,c,d和m 其中每個符號對應的值如下表 符號 值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 羅馬數字...

張老師的期待

希望畢業後,學生的技能 1 linux 多門課程需要,盡早引導自學,目前設想大一下學期由研究生業餘時間組織學習 掌握命令 指令碼程式設計 服務配置 系統管理等 2 程式設計 組合語言 熟悉一種組合語言,有 彙編 思想 純c 建議直接採用gcc教學,c 可依興趣自學 資料結構 作業系統核心程式設計 熟...