1 条题解
-
1
如果你知道怎么做球同,盒同,可空这道题,那么你就一定会做这道题。
题目约束每个盒的球必须为奇数(即 ),不妨对每个盒的球数减一再除以二(即 ),这个过程等价于 ,由此问题转化为“球同,盒同,可空”。
code:
#include<bits/stdc++.h> #define int long long #define mod 1000000007 using namespace std; int f[4090][4090]; int n,k; signed main(){ cin>>n>>k; n-=k; if(n&1){//判无解 cout<<0; return 0; } n>>=1; for(int i=0;i<=k;i++)f[0][i]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=k;j++){ f[i][j]+=f[i][j-1],f[i][j]%=mod; if(i>=j)f[i][j]+=f[i-j][j],f[i][j]%mod; } } cout<<f[n][k]%mod; return 0; }
- 1
信息
- ID
- 283
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 7
- 已通过
- 2
- 上传者