POJ 2373 單調佇列優化dp

2021-07-30 07:44:15 字數 488 閱讀 2482

題目大意:有一塊長度為l的草原,你需要用灑水器把所有草坪都覆蓋並且每塊草坪只能被覆蓋一次,有n個奶牛所在的草坪屬於[l,r],這些區間只能有乙個灑水器;

題目解析:定義dp[i]為在第i塊草坪結束的時候所蘇姚最少的灑水器,dp[i]=min(dp[j]+1),i-2b<=j<=i-2a,還有乙個問題就是n個奶牛的問題,其實只要標記那些草坪是不能結束的就可以了;

ac**:

#include#include#include#include#includeusing namespace std;

const int maxn=1010;

const int inf = 0x3fffffff;

struct node

p[maxn];

bool cmp(node a,node b)

{ if(a.x==b.x) return a.yfront)

{f[i]=f[q[front]]+1;

//cout<

POJ2373 單調佇列優化DP

這道題調了我一天.呃.開始很多地方沒注意.傳說中樓教主的男人八題搞定一道.這道題是一道典型的dp題.但直接做時死超的.所以要用單調佇列來優化.關於最基礎的單調佇列.我前一篇文章已經說了.所以直接分析本題.題意是說有乙個直線的山脊.噴泉是乙個在中間向兩邊同時噴的.最近噴a.最遠b.同時山脊上有牛.每只...

POJ 2373 單調佇列優化DP

題意 思路 f i min f j 1 2 i j 2 i表示當前在第i個點。f i 表示當前最少的線段個數 先是n 2的樸素dp 果斷tle by siriusren include include include using namespace std int n,l,a,b,tot 1,xx,...

poj2373(單調佇列優化dp)

傳送門 題意是每個灑水裝置的半徑範圍為 a,b 每頭奶牛有自己的乙個區間 s,e 這個區間只能由乙個灑水裝置覆蓋。要求整個區間 1,l l 1e6 不重疊的被覆蓋,最少要多少個灑水裝置,灑水裝置的範圍不可以超過整體區間的範圍。因為乙個區間 s,e 只能由乙個灑水裝置覆蓋,所以 s 1,e 1 都不可...