11.11模擬賽

你说得太对辣發表於2024-11-20

100 + 100 + 0 + 0

A.

小 A 在暑假的時候教了 \(n\) 個學生程式設計,因為這 \(n\) 個學生表現不錯,他決定獎勵他們新烤出來的麵包,麵包數量和學生一樣都是 \(n\)個,其中第 \(i\) 個麵包的大小為 \(a_i\),這樣每個學生都能分到恰好一個麵包。但是麵包的大小可能會不一樣,為了避免因為大小不均導致有的學生傷心,小 A 會把這些麵包做若干次對半分的操作(對半分的操作指:如果麵包的大小 \(x\) 為偶數,則會將麵包分成兩個大小為 \(\frac{n}{2}\) 的麵包並捨棄掉其中一個,如果為奇數,則會將麵包分成兩個大小分別為 \(\lfloor \frac{n}{2} \rfloor\)\(\lceil \frac{n}{2} \rceil\) 的麵包並捨棄掉其中一個)
為了保證所有面包大小都相同,同時在此基礎上小 A 希望所有面包儘可能地大,小 A 需要做多少次對半分的操作,以及每個麵包的大小最大是多少?

發現如果是奇數的話每次留奇數即可,因為這個奇數會分成的東西中一定含偶數分成的東西。

然後隨便做就行了,時間複雜度 \(O(n \log^2n)\)

B.

倆人在樹上下棋,要求不能有一條邊的一端為黑子,一端為白子,求在兩人下的棋子數之和最大的情況下的方案數。

倆人下的棋子數之和最大一定是 \(n-1\),列舉一個點,這個點不下,統計方案數。不難發現對於一個點的方案數為