尺取法基礎

2021-09-21 06:47:58 字數 1483 閱讀 2025

p1638 逛畫展

題意:求最短區間包含所有畫家。

思路:利用兩個變數來維護區間,如果區間不滿足條件r++,滿足的話,l++直到區間最小。

#includeusing namespace std;

int a[1000005],b[1000005];

int main()

b[a[l]]--;

if(b[a[l]]==0)

k--;

l++;

} else

} printf("%d %d\n",ll,rr);

}

p2698 [usaco12mar]花盆flowerpot

題意:求出最小的花盆寬度使得從接第一滴雨水到最後滴雨水的間隔時間大於d.

思路:按雨水的x軸排序,用線段樹求得符合條件的區間,兩個變數維護區間,符合條件不斷縮小區間,不符合條件,r++。

#includeusing namespace std;

struct nodea[1000005];

struct trtree[1000005<<1];

int n,m,u,v,ans,l,r;

int cmp(node x,node y)

int findminn(int nod,int l,int r,int ll,int rr)

int main()

} else

} }if(ans==1e8)

puts("-1");

else printf("%d\n",ans);

return 0;

}

p2564 [scoi2009]生日禮物

題意:給定彩帶,帶子上有一些珠子,求剪掉最小區間使得包含所有珠子。

思路:兩個變數維護區間,區間符合要求時l++縮小區間,不符合時r++,擴大。

#includeusing namespace std;

struct nodea[1000005];

int b[1000005];

int cmp(node x,node y)

} else

} }printf("%d\n",ans);

}

數糖紙

題意:給定n個糖紙,分布在區間裡面,問能在一段區間裡面取得最大數量的糖紙,且不重複。

思路:去重,乙個陣列維護每個糖紙的位置,用兩個變數維護區間,當糖紙數量達到最大數量時,左端點右移,減少重複糖紙數量,否則移動右端點,如果右端點區間以經有了,則移動左端點。

#includeusing namespace std;

int b[1000005];

int a[1000005];

int vis[1000005];

int main()

else

} }printf("%d\n",ans);

}

演算法 尺取法

我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。題目翻譯 給定長度為n的數列整數a0,a1,a2,a3 an 1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。限制條件 100s 10 8 這裡我們拿第一組測試資料舉例子,即 n 10,s 15,...

尺取法練習

mr wolfram 的csdn 部落格 hopeforbetter的csdn部落格,尺取法顧名思義就像尺子一樣,當測量乙個物體時,你不一定從開始的位置測量,你可以從任意乙個位置st開始,當然前提是尺子夠長,然後你再讀出尾部en的數,尾部減去開始的位置en st,就是這個物體的長度。尺取法就是這個思...

尺取法,藍橋

小明維護著乙個程式設計師論壇。現在他收集了乙份 點讚 日誌,日誌共有n行。其中每一行的格式是 ts id表示在ts時刻編號id的帖子收到乙個 贊 現在小明想統計有哪些帖子曾經是 熱帖 如果乙個帖子曾在任意乙個長度為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是 熱帖 具體來說,如果存在某個時刻...