種樹(差分約束)

2021-08-07 02:58:04 字數 1205 閱讀 3123

種樹

(來自:luogu 1250)

題目概述:

一條街的一邊有幾座房子。因為環保原因居民想要在路邊種些樹。路邊的地區被分割成塊,並被編號成1..n。每個部分為乙個單位尺寸大小並最多可種一棵樹。每個居民想在門前種些樹並指定了三個號碼b,e,t。這三個數表示該居民想在b和e之間最少種t棵樹。當然,b≤e,居民必須記住在指定區不能種多於區域地塊數的樹,所以t≤e-b+1。居民們想種樹的各自區域可以交叉。你的任務是求出能滿足所有要求的最少的樹的數量。

資料規模:

資料均小於30000

思路:

這個題目用差分約束系統來做,這裡我用了最短路「至多型」,同小取小,然後注意一點在這裡用結構體來存圖(似乎這個題卡陣列存圖求最短路的思路,只有54分),但是最長路是不卡的,可能是因為最長路放在這個題上思路比較簡單直接的原因吧。

題外話:

lzh大佬說差分約束系統很有意思,我感覺差分約束這個東西讓我找到了一種數學的感覺,距離noip2017就剩三個月了,come on!

差分約束 種樹

題目鏈結 一條街的一邊有幾座房子,因為環保原因居民想要在路邊種些樹。路邊的地區被分割成塊,並被編號成 1,2,n。每個部分為乙個單位尺寸大小並最多可種一棵樹。每個居民都想在門前種些樹,並指定了三個號碼 b,e,t。這三個數表示該居民想在地區 b 和 e 之間 包括 b 和 e 種至少 t 棵樹。居民...

種樹 差分約束 貪心

先看貪心版本。每次種的樹在重疊區間越多,種的樹越少。只有結束位置才會重合,就對區間結束的位置從小到大排序。然後遍歷每個區間統計第i個區間種了k個樹,若k大於 t 則continue,否則從區間末尾往前種樹。貪心種樹 include using namespace std struct n print...

種樹(一道簡單的差分約束系統)

為了綠化鄉村,h村積極響應號召,開始種樹了。h村里有n幢房屋,這些屋子的排列順序很有特點,在一條直線上。於是方便起見,我們給它們標上1 n。樹就種在房子前面的空地上。同時,村民們向村長提出了m個意見,每個意見都是按如下格式 希望第li個房子到第ri個房子的房前至少有ci棵樹。因為每個房屋前的空地面積...