P5218: 牛棚分配
传统题
1.000s
时间限制
256MB
内存限制
45 提交
17 解决
【题目描述】
Farmer John 有 N 头奶牛(1≤N≤20
),高度为 a1…aN
。他的牛栏有 N 个牛棚,高度限制分别为 b1…bN
(例如,如果 b
5=17
,那么一头高度不超过 17 的奶牛可以住在牛棚 5 里)。Farmer John 有多少种不同的方式安排他的奶牛,使得每头奶牛均住在不同的牛棚里,并且使得每个牛棚的高度限制均得到满足?
输入格式(从终端/标准输入读入):
输入的第一行包含 N 。第二行包含 N 个空格分隔的整数
a1,a2,…,aN。第三行包含 N 个空格分隔的整数
b1,b2,…,bN。所有的高度和高度限制均在范围 [1,10
9] 内。
输出格式(输出至终端/标准输出):
输出 Farmer John 可以将每头奶牛安排到不同的牛棚里,使得每个牛棚的高度限制均得到满足的方法数。注意输出的数量可能需要使用 64 位整数型,例如 C++ 中的 long long。
输入样例:
4
1 2 3 4
2 4 3 4
输出样例:
8
在这个例子中,我们不能将第三头奶牛安排到第一个牛棚里,因为
3=a3>b1=2。类似地,我们不能将第四头奶牛安排到第一或第三个牛棚里。一种符合高度限制的安排方式为将奶牛 1 安排到牛棚 1,奶牛 2 安排到牛棚 2,奶牛 3 安排到牛棚 3,奶牛 4 安排到牛棚 4。
测试点性质:
-
测试点 1-5 满足 N<=8。
-
测试点 6-12 没有额外限制。