Loading

11.11模拟赛

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\),枚举一个点,这个点不下,统计方案数。不难发现对于一个点的方案数为

posted @ 2024-11-20 00:31  你说得太对辣  阅读(10)  评论(0编辑  收藏  举报