張老師的旅行
題解:區間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 2using
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 可依興趣自學 資料結構 作業系統核心程式設計 熟...