USACO12MAR 花盆(單調佇列)

2022-03-17 00:07:55 字數 551 閱讀 8234

有n個點\((x,y)\),求乙個在\(x\)軸上的最小區間,使得它包含的所有點中的\(y\)的極差至少為\(d\),\(x,y,d\leq 10^6\)

將點按\(x\)排序,顯然\(2-pointers\),需要隨時維護乙個滑動視窗的最大值和最小值,顯然單調佇列(也可以用離散化+st表或者線段樹,不過多了個log)

#include#define n 100005

using namespace std;

int n,d,ans=n*1000;

int qmax[n],lmax,rmax;

int qmin[n],lmin,rmin;

struct node nd[n];

template void read(t &x)

bool cmp(node a,node b)

// cout<=d) ans=min(ans,nd[now].x-nd[i].x);

} if(ans==n*1000) cout<<-1

}

USACO12MAR 花盆 二分 單調佇列

存在乙個長度為 x 的區間 l,r 使得區間中最大值與最小值差至少為 w 求這個最小的 x n le 100000 w le 1000000 顯然區間長度 x 越大,最值之差越大,滿足單調性,上二分答案,問題轉化為是否存在長度為 mid 的區間中最值之差至少為 w 而這個問題可以用單調佇列 滑動視窗...

USACO08MAR 土地購買

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

Usaco2008 Mar 土地購買

此題依舊是斜率優化。感覺自己做斜率優化做瘋了 滑稽 還是與先前一樣弄出dp式 這裡要著重說明一下 這裡的x,y都已經是排過序並整理了的!我們先按照x為第一關鍵字,y為第二關鍵字來從小到大 both 排序。隨後,我們發現它的y不滿足單調性。所以我們應當將其轉換一下。這樣子,我們就可以斜率優化了。設k上...