線性動態規劃之 P1868 飢餓的奶牛 打卡打卡!

2021-10-22 17:35:17 字數 925 閱讀 9683

洛谷鏈結點這裡

好了,這是我找二分例題的時候刷到的,我也不知道為什麼會出來dp區間和

ok,現在一步步來分析題目

第一步,我要處理輸入的資料,假設我有這麼幾段區間,[16,20],[18,20],[19,20]和[1,5],[2,5],[3,5],[4,5],和 [8,11],[9,11],[10,11]那麼你打算怎麼處理它呢?

我的想法是弄乙個容器vector陣列,把[ x , y ]的y作為乙個個容器,然後把x塞進去,那麼最後就會變成這樣了

20裡面有16,18,19這三個元素

5裡面有1,2,3,4這四個元素

11裡面有8,9,10這三個元素

第二步,確定最右的邊界作為第乙個for迴圈的終止條件

做法是設乙個變數mx不斷地對輸入的y取mx=max(mx,y)

第三步,也是最麻煩的一步,其實也就是兩個for迴圈套dp模板

那麼,要怎麼套用呢

我們最開始開了個vector< int>bag[30000001]

乙個個x其實就是bag[y] [0 ~ 元素個數]

比如16,20裡面的x=16就是bag[20][0]

而3,5這裡的x=3就是bag[5][2]

然後就…

for(int i=1;i<=最右邊界;i++)

for(int i=1;i<=mx;i++){

dp[i]=dp[i-1];

for(int j=0;j如果你把我的**copy上去了的話只能拿91分,第三個測試點會wa掉,因為那個測試點會出現x=0,那麼你x-1=-1了,怎麼改呢,其實只要加一句對x的if判斷就好了,相信聰敏如冰冰的你一定想得出來哈哈哈哈哈哈哈

P1868 飢餓的奶牛

有一條奶牛衝出了圍欄,來到了一處聖地 對於奶牛來說 上面用牛語寫著一段文字。現用漢語翻譯為 有n個區間,每個區間x,y表示提供的x y共y x 1堆優質牧草。你可以選擇任意區間但不能有重複的部分。對於奶牛來說,自然是吃的越多越好,然而奶牛智商有限,現在請你幫助他。輸入格式 第一行,n,如題 接下來n...

洛谷P1868 飢餓的奶牛

有一條奶牛衝出了圍欄,來到了一處聖地 對於奶牛來說 上面用牛語寫著一段文字。現用漢語翻譯為 有n個區間,每個區間x,y表示提供的x y共y x 1堆優質牧草。你可以選擇任意區間但不能有重複的部分。對於奶牛來說,自然是吃的越多越好,然而奶牛智商有限,現在請你幫助他。輸入格式 第一行,n,如題 接下來n...

洛谷P1868 飢餓的奶牛 DP

時空限制 1000ms 128mb 題目描述 有一條奶牛衝出了圍欄,來到了一處聖地 對於奶牛來說 上面用牛語寫著一段文字。現用漢語翻譯為 有n個區間,每個區間x,y表示提供的x y共y x 1堆優質牧草。你可以選擇任意區間但不能有重複的部分。對於奶牛來說,自然是吃的越多越好,然而奶牛智商有限,現在請...