洛谷:P1866:编号


Table of Contents

题目

P1866:编号

分析

考虑4个兔子的情况,假定它们的编号偏好是[8, 3, 5, 6]。显然,如果3这只兔子最后一个选,而另外三只兔子已经选好了1/2/3,那这只兔子将没有编号可选。所以,我们需要从编号最低的兔子开始。假定已经完成排序,那么分配号码的过程模拟如下:

  1. 3这只兔子有\(3\)种选择。
  2. 5这只兔子本来可以有5种选择,但一定会被3这只兔子用掉1个。所以它的选择是\(4\)种。
  3. 6这只兔子本来可以有6种选择,但一定会被35这两只兔子用掉了2个。它的选择是\(4\)种。
  4. 8这只兔子本来可以有8种选择,但一定会被356这三只兔子用掉了3个。它的选择是\(5\)种。

最终的选择方案是:\(3 \times 4 \times 4 \times 5 = 240\)种。

另外,题目中提到要对\(10^9+7\)取模,那么中间结果必须用long long来表示,不然会溢出。同时,每步计算都要求一下模。

答案

Solution

思考

这里有两个点需要强调:

  1. 必须用long long——当然,实际中因为不断求了模,中间结果好像不是太大。我用了int也通过了。
  2. 排序很关键。

这道题和USACO 2021 January Bronze Contest 3 Just Stalling类似。