spfa 貪心 洛谷P1250 種樹

2021-08-01 22:57:43 字數 818 閱讀 6983

貪心這個很簡單吧;

就是按右端排序;

當前區間不滿則在右端種樹;

這樣可以保證重複最多;

spfa就很有意思了

其實題目化開來

查分約束系統,變數dis[k]是前k家種樹的字首和,滿足三個條件:

1.s[e] - s[b-1] >= t (居民要求)

2.s[k] - s[k-1] >= 0 (不能種負樹)

3.s[k] - s[k-1] <= 1 (一塊地種一棵)

對於第乙個,我們把b-1到e連一條t的邊

對於第二個,我們把k-1到k連一條0的邊

對於第三個,我們把k到k-1連一條-1的邊

直接跑最長路;

原因自己模擬模擬;

感覺和網路流建圖差不多的想法啊;

#include

using

namespace

std;

const

int n=30005;

struct csa[n*100];

int d[n];

bool in[n];

int head[n],ll;

int x,y,n,m,z;

void init (int x,int y,int z)

void spfa(int s)}}

}}int main()

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

spfa(0);

printf("%d",d[n]);

}

洛谷 P1250 種樹 貪心

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

洛谷P1250種樹(貪心)

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

20190709種樹(洛谷P1250)

題目描述 一條街道的一邊有幾座房子,因為環保原因居民想要在路邊種些樹,路邊的居民被分割成 n 塊,並被編號為 1 n。每塊大小為乙個單位尺寸並最多可種一棵樹。每個居民想在門前種些樹並指定了三個數b,e,t。這三個數分別表示該居民想在b和e之間最少種t棵樹,當然b e,t e b 1,允許居民想種樹的...