把初始高度排序为 b1≤b2≤⋯≤bNb_1\le b_2\le\cdots\le b_Nb1≤b2≤⋯≤bN,并令 b0=0b_0=0b0=0。
操作始终同时影响所有达到所选高度的楼,因此相同初始高度的楼最终高度也相同;按初始高度从低到高观察,新出现的一组楼相对前一组还能独立选择额外保留多少个高度层,选择数为 bi−bi−1+1b_i-b_{i-1}+1bi−bi−1+1。
各层选择互相独立,所以答案是 ∏i=1N(bi−bi−1+1)\prod_{i=1}^N(b_i-b_{i-1}+1)∏i=1N(bi−bi−1+1)。
排序后线性累乘并取模即可,时间复杂度为 O(NlogN)O(N\log N)O(NlogN),额外空间为 O(N)O(N)O(N)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户