狗笼

测试数据来自 system/2909

作业已超过截止时间,您无法递交本题目。

时间限制:1秒  内存限制:256M


【题目描述】

  小P养了 \(N(1≤N≤20)\)只小狗,高度为 \(h_1..h_N\)。

  由于这些狗时常相互打斗受伤,因此小P购买了 \(N\) 个狗笼子来把它们关起来,笼子的高度限制分别为 \(H_1..H_N\)。例如,如果 \(H_3=10\),那么一只高度不超过 10 的小狗可以住在笼子3 里面。

  那么小P有多少种不同的方式安排他的小狗,使得每只小狗均住在不同的笼子里,并且使得每个笼子的高度限制均得到满足。

【输入格式】

  输入的第一行包含 \(N\)。
  第二行包含 \(N\) 个空格分隔的整数 \(h_1,h_2,…,h_N\)。
  第三行包含 \(N\) 个空格分隔的整数 \(H_1,H_2,…,H_N\)。
  所有的高度和高度限制均在范围 \([1,10^9]\) 内。

【输出格式】

  输出小P可以将每只小狗安排到不同的笼子里,使得每个笼子的高度限制均得到满足的方法数。

【输入输出样例1】

 Input

4
1 2 3 4
2 4 3 4

 Output

8

【样例1解释】

  在这个例子中,我们不能将第三只大型犬安排到第一个笼子里,因为 \(3=h_3>H_1=2\)。类似地,我们不能将第四只大型犬安排到第一或第三个笼子里。一种符合高度限制的安排方式为将犬 1 安排到笼子 1,犬 2 安排到笼子 2,犬 3 安排到笼子 3,犬 4 安排到笼子 4。

【输入输出样例2】

 Input

6
10 23 14 12 19 17 
20 15 13 18 25 24

 Output

32

【输入输出样例3】

 Input

17
19 32 21 23 25 20 27 18 29 34 40 25 32 30 26 28 35
40 33 21 33 25 26 30 29 25 33 42 28 37 27 33 24 36

 Output

471859200

【测试点性质】

  测试点 \(1−5\) 满足 \(N≤8\)。
  测试点 \(6−12\) 没有额外限制。

【来源】

  Mr.he

代码能力练习(四)

未认领
状态
已结束
题目
6
开始时间
2025-10-14 00:00
截止时间
2025-11-02 23:59
可延期
24.0 小时