Usaco2008 Mar 土地購買

2022-05-16 22:34:36 字數 742 閱讀 9060

此題依舊是斜率優化。

感覺自己做斜率優化做瘋了(滑稽)

還是與先前一樣弄出dp式:

這裡要著重說明一下:

這裡的x,y都已經是排過序並整理了的!!!

我們先按照x為第一關鍵字,y為第二關鍵字來從小到大(both)排序。

隨後,我們發現它的y不滿足單調性。

所以我們應當將其轉換一下。

這樣子,我們就可以斜率優化了。

設k上標:

#include

#include

#define n 50010

#define db double

#define ll long long

using namespace std;

struct nodea[n]

;int n,g[n]

,len=

0,l=

0,tot=1;

ll f[n]

;inline

intread()

intcmp

(node x,node y)

db solve

(int x,

int y)

intmain()

for(

int i=

1;i<=tot;i++

)printf

("%lld\n"

,f[tot]);

return0;

}

USACO08MAR 土地購買

點此看題 首先考慮如果有乙個塊長和寬都比另乙個塊要小,那麼這個塊就沒有存在的意義了,我們可以先排序 長為第一關鍵字,寬為第二關鍵字,從小到大 然後從後往前掃,期間維護寬的最大值,如果最大值不比當前寬小,那麼這個塊沒用,我們去除完沒用的點之後再排一遍序 方法一樣 這樣就可以愉快的dpdp dp了,設d...

USACO12MAR 花盆(單調佇列)

有n個點 x,y 求乙個在 x 軸上的最小區間,使得它包含的所有點中的 y 的極差至少為 d x,y,d leq 10 6 將點按 x 排序,顯然 2 pointers 需要隨時維護乙個滑動視窗的最大值和最小值,顯然單調佇列 也可以用離散化 st表或者線段樹,不過多了個log include def...

usaco2013 mar 懶惰的奶牛

夏天又到了,奶牛貝里斯開始變得非常懶惰。他想要站在乙個地方,然後只走很少的一段路,就能吃到盡可能多的美味的青草。有n塊草坪排列在一條直線上,第i個草坪擁有g i數量的青草,第i個草坪所在的位置是x i。奶牛貝里斯想要在直線上選擇乙個點作為他的初始點 初始點有可能和草坪的位置重合 這樣他就能吃到以這個...