COGS2485 從零開始的序列

2022-02-27 14:04:08 字數 772 閱讀 4071

傳送門

題意:給定乙個長為$n$的序列,定義$f(x)$表示所有(長為$x$的區間最小值)的最大值,求$f(1)$~$f(n)$。

看好多人都用並查集做的,然而我並不想寫……既然品酒大會可以字尾陣列+並查集也可以直接用字尾樹遞推,那這個問題直接上樹再遞推也行吧……

跟rmq有關的乙個樹形結構就是笛卡爾樹,那麼我們構建笛卡爾樹後自底向上遞推一遍即可,對每個節點更新它對應區間長度的答案,最後根據$f(x)\ge f(x+1)$更新一遍所有的$f$即可。

1 #include2 #include3 #include4

using

namespace

std;

5const

int maxn=200010;6

void

bfs();

7int n,a[maxn],f[maxn],root,lc[maxn]=,rc[maxn]=,s[maxn],top=0,q[maxn],size[maxn]=;

8int

main()

23bfs();

24for(int i=n;i;i--)f[i]=max(f[i],f[i+1

]);25

for(int i=1;i<=n;i++)printf("

%d "

,f[i]);

26return0;

27}28void

bfs()

37for(int i=n;i;i--)

42 }

view code

從零開始的canvas

最近工作都是增刪改查。正好you有時間學點新東西,er而不是單純的業務上的東西 所以就學學canvas吧 sho首選建立乙個canvas var c document.getelementbyid mycanvas var ctx c.getcontext 2d 然後進行定義 ctx.beginpa...

從零開始的聯合

關鍵字 union,語法與struct樣,區別是所有成員共用一塊儲存空間。當給其中乙個成員賦值時,其它成員的值也會發生變化。使用union判斷系統是大端還是小端。int num 0x01020304 0xe1e2e3e4 num 低位位址儲存低位資料 小端。0xe1e2e3e4 0x04 0xe1e...

從零開始的openstack之路

一 它是什麼,能幹什麼 openstack是乙個搭建雲平台的乙個解決方案 可以搭建公有雲,私有雲,企業雲。順便說一下,企業雲將是openstack的用武之地 二 openstack組成 openstack更像是經過計算機的72變之後的產物。包括 7個核心元件 compute 計算 object st...