AcWing 3360. 牛棚
原题链接
简单
作者:
O₂
,
2024-03-13 19:14:50
,
所有人可见
,
阅读 9
思路:
把a和b数组排序,求出每头奶牛最多可以选多少个牛棚,因为奶牛的升高越高,能选的牛棚的数量的数量就越少,我们需要让前
面的奶牛去除掉后面奶牛选过的点
C++ 代码
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long LL;
const int N=30;
int n,a[N],b[N],p[N];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
sort(a+1,a+n+1);
sort(b+1,b+n+1);
for(int i=1;i<=n;i++){
p[i]=lower_bound(b+1,b+n+1,a[i])-b;
p[i]=n-p[i]+1;
}
LL res=1;
for(int i=n;i>=1;i--){
res*=p[i];
for(int j=i-1;j>=1;j--){
if(j-i+1>p[j]) break;
p[j]--;
}
}
cout<<res<<endl;
return 0;
}
菜鸡一枚
yes