1. 程式人生 > >10-1測試

10-1測試

都是 二叉樹 處理 最優決策 技巧 一行 競爭 一個數 話題

今天水了~~

一句話題意:

T1:給n個點和k張門票,每次隨機踢掉一個點,問1個人拿到門票的概率。1<=k<=n<=10^9

T2:給定一個數字三角形,可以從(i,j)走到(i+1,j)或(i+1,j+1),每次ban掉1個點,求從左上到最後一行的最大權值和。n<=1000,操作數<=10^5

T3:給定一顆區間二叉樹,父親的區間由兒子組成,詢問[l,r]由多少個區間組成(最少),n<=10^5,詢問數<=10^5

Solution:

T1:不難發現每個人都是公平競爭的,答案就是k/n了

T2:可以發現每一行都必須取1個點,然後算出從起點到每個點的最大取值和這個點到終點的最大取值,預處理出每行的最優決策點和次優決策點,若ban掉的這個點為最優決策點則輸出次優方案,否則輸出最優方案。n^2+m.

T3:這裏有個重要的小技巧,[l,r]中根節點的個數=區間長度-非葉子節點個數=(r-l+1)-非葉子節點個數。將詢問與所有節點代表的區間按l排序,線掃時維護一下區間在[l,r]中的非葉子節點的個數即可。

10-1測試