【基礎練習】【線性DP】codevs3027 線段覆蓋2題解
阿新 • • 發佈:2017-07-20
嚴重 weight 代碼 -c -h scrip trac tput adding
輸入描寫敘述 Input Description
——不敢高聲語,恐驚天上人。
文章被盜還是非常嚴重,加版權信息
轉載請註明出處 [ametake版權全部]http://blog.csdn.net/ametake歡迎來看看
這道題目是線性動歸 可是思想和背包有些類似 事實上線性動歸非常多思想都是背包類似 所以還是依照線性動歸分類
果然寫了2就不想再寫1的DP版本號了= =
題目描寫敘述 Description數軸上有n條線段,線段的兩端都是整數坐標。坐標範圍在0~1000000,每條線段有一個價值。請從n條線段中挑出若幹條線段,使得這些線段兩兩不覆蓋(端點能夠重合)且線段價值之和最大。
n<=1000
第一行一個整數n,表示有多少條線段。
接下來n行每行三個整數, ai bi ci,分別代表第i條線段的左端點ai。右端點bi(保證左端點<右端點)和價值ci。
輸出描寫敘述 Output Description輸出可以獲得的最大價值
例子輸入 Sample Input3
1 2 1
2 3 2
1 3 4
例子輸出 Sample Output4
數據範圍及提示 Data Size & Hint數據範圍
對於40%的數據。n≤10。
對於100%的數據,n≤1000。
0<=ai,bi<=1000000
0<=ci<=1000000
題目如上思想是用結構體存儲左右端點和值 f[i]表示的是選第i條線段所能有的最大值 方程f[i]=max{f[j]}+a[i].c 當中0<j<i且a[j].r<=a[i].l 即除端點外兩線段不重疊 最後掃一遍
註意 f[i]表示的是選第i條線段所能有的最大值 並非前i條線段 私以為假設表示前i條的話可能還要多一維 但沒想到非常好的方法 codevs題解區好像有人用前i條做的 能夠看一下
一次性A真高興
上代碼
——不敢高聲語,恐驚天上人。
【基礎練習】【線性DP】codevs3027 線段覆蓋2題解