[题解] P7154 [USACO20DEC] Sleeping Cows P
[题解] P7154 [USACO20DEC] Sleeping Cows P
解题报告
有
头奶牛和 个牛棚,一个奶牛 能进入一个牛棚 当且仅当 ,一个牛棚最多只能容纳一头牛。 定义一个完美匹配为:对于所有未分配的奶牛,都不能有任何一个未匹配的牛棚满足条件,求完美匹配的方案数。
关键是找到那些没有匹配的牛棚来计算。
考虑把
于是设计状态为
注意:
初始为
状态转移
设考虑到了第
- 第
位置为牛。
分为下一轮丢没丢奶牛进行考虑。
- 第
个位置为牛棚。
前两种情况是考虑把当前需要分配的
第三种情况是这个牛棚直接作废。
注意:如果当前丢掉了一些奶牛,那么这个牛棚必须被填满,所以
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
template <typename T>
inline T read(){
T x=0;char ch=getchar();bool fl=false;
while(!isdigit(ch)){if(ch=='-')fl=true;ch=getchar();}
while(isdigit(ch)){
x=(x<<3)+(x<<1)+(ch^48);ch=getchar();
}
return fl?-x:x;
}
#define LL long long
const int maxn = 3000 + 10;
const int P = 1e9 + 7;
struct node{
int val,type;
bool operator <(const node &x)const{
if(val!=x.val)return val<x.val;
return type<x.type;
}
}a[maxn<<1];
int s[maxn],t[maxn],n;
int f[maxn<<1][maxn][2],ans;
inline void add(int &a,int b){
a+=b;
if(a>=P)a-=P;
}
#define read() read<int>()
int main(){
n=read();
for(int i=1;i<=n;i++)s[i]=read(),a[i]=(node){s[i],0};
for(int i=1;i<=n;i++)t[i]=read(),a[i+n]=(node){t[i],1};
sort(a+1,a+1+n*2);
f[0][0][1]=1;
for(int i=0;i<n*2;i++){
if(a[i+1].type==0){
for(int j=0;j<=n+1;j++){
add(f[i+1][j+1][0],f[i][j][0]);
add(f[i+1][j][0],f[i][j][0]);
add(f[i+1][j+1][1],f[i][j][1]);
add(f[i+1][j][0],f[i][j][1]);
}
}
else {
for(int j=0;j<=n+1;j++){
if(j>0)add(f[i+1][j-1][0],1LL*j*f[i][j][0]%P);
if(j>0)add(f[i+1][j-1][1],1LL*j*f[i][j][1]%P);
add(f[i+1][j][1],f[i][j][1]);
}
}
}
ans=f[n*2][0][0]+f[n*2][0][1];ans%=P;
printf("%d\n",ans);
return 0;
}
小结
核心是放在一起排序DP,保证了合法状态方便转移。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~