超级产品经理
登录
首页 业界 产品 运营 技术 AI&大模型 网址导航

迷之盒子 - 带上界的隔板法

题目链接:迷之盒子 显然就是隔板之后,每个盒子个数要小于等于k。 我们可以利用容斥来做。 至少有0堆(k+1)的 - 至少有1堆(k+1)的 + 至少有2堆
2023-11-24 技术

题目链接:迷之盒子


显然就是隔板之后,每个盒子个数要小于等于k。

我们可以利用容斥来做。

至少有0堆(k+1)的 - 至少有1堆(k+1)的 + 至少有2堆(k+1)的。。。。。。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
#define int long long
using namespace std;
const int N=5e5+10,mod=1e9+7;
int n,m,k,f[N],inv[N],res;
int qmi(int a,int b){int res=1;for(;b;b>>=1LL,a=a*a%mod)	if(b&1LL)	res=res*a%mod;return res;	
}
inline int C(int n,int m){if(m>n)	return 0;return f[n]*inv[m]%mod*inv[n-m]%mod;
}
signed main(){f[0]=inv[0]=1;for(int i=1;i<=5e5;i++)	f[i]=f[i-1]*i%mod;inv[500000]=qmi(f[500000],mod-2);for(int i=5e5-1;i>=1;i--)	inv[i]=inv[i+1]*(i+1)%mod;cin>>n>>m>>k;for(int i=0;i<=m;i++){if(n+m-i*(k+1)-1<=0)	break;if(i&1)	res=(res-C(n,i)*C(n+m-i*(k+1)-1,n-1)%mod+mod)%mod;else	res=(res+C(n,i)*C(n+m-i*(k+1)-1,n-1)%mod)%mod;}cout<<res;return 0;
}

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

推荐阅读

  • Duilib中list控件支持ctrl和shif多行选中的实现 2023-12-08
  • [ICML2015]Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shif 2023-12-08
  • win10系统 微软输入法 于eclipse ctrl+shif+f冲突间接处理办法 2023-12-08
  • Codeforces Round #259 (Div. 2) B. Little Pony and Sort by Shif 2023-12-08
  • 读LDD3,内存映射与DMA--PAGE_SHIF… 2023-12-08
关于网站 联系我们 浙ICP备14026978号-4
点击图标分享
首页 搜索 栏目 我的