來填坑了......數組
T1:spa
將$A$和$B$當作變量,那麼題意轉化爲是否存在$A$和$B$,使得$\frac{A}{a_i}+\frac{B}{b_i}$最小。排序
解不等式$\frac{A}{a_i}+\frac{B}{b_i}<\frac{A}{a_j}+\frac{B}{b_j}$得:基礎
$\frac{A}{B}<\frac{a_ia_j(b_i-b_j)}{b_ib_j(a_j-a_i)}$。變量
不難看出只與$A$和$B$的比值有關。時間
將$(\frac{1}{a_i},\frac{1}{b_i})$抽象成平面上的點,則$\frac{A}{a_i}+\frac{B}{b_i}=z$能夠當作一條直線。字典
鑰匙$z$儘量小,就要維護一個左下凸包。樹形結構
吧$a$和$b$數組排序,用單調棧儲存凸包上的點。數組排序
時間複雜度$O(nlogn)$。
T2:
能夠把每一個化學物質的鍵能做爲未知量代入,可是有特殊狀況,便可以在不知道全部未知量的具體數值的基礎上求得的答案。
發現最終答案只與給定方程的焓變有關,將每一個方程所佔的百分比當作未知量,拼出最後方程便可。
時間複雜度$O(n^3)$。
T3:
撞車次數隨時間單調不減沒,因而能夠二分時間。
將每一個人此時的位置算出,因爲每一個人都從靜止開始作勻加速運動,因此不相撞的條件爲相對位置不發生改變。
將全部人按初始位置排序,問題轉化爲求最長上升子序列。
考慮如何求字典序最小的方案。
LIS的轉移爲樹形結構,動態維護已經創建出來的樹,發現字典需大小取決於lca如下,樹上倍增維護最小值進行比較便可。
時間複雜度$O(nlogn)$。