原来我一开始以为的\( O(n^2) \)是调和级数\( O(nlog_2n) \)的!

首先枚举猴王的桃子个数\( x \),然后使用容斥原理,枚举有至少\( k \)个不满足的条件,那么这\( k \)个不满足的条件得组合个数为\( C_{m-1}^{k} \),这\( k \)个不满足的条件每个至少是\( x+1 \),在总的桃子个数中去掉不满足条件的\( k \)个\( x+1 \),然后在剩下的桃子中使用隔板法,方案数为\( C_{n-(k+1)*x+m-2}^{m-2} \)

那么就可以得到公式:

\[ans=\sum_{x=1}^{x<=n,x>\frac{n-x}{m-1}}(\sum_{k=0}^{n-(k+1)*x\geq 0}((-1)^k*C_{m-1}^{k}*C_{n-(k+1)*x+m-2}^{m-2}))
\]

关于这个的复杂度呢看似平方实则是调和级数\( O(nlog_2n) \)的……但是我不太会算啊据说内层的k一共有n/x种取值

#include<iostream>
#include<cstdio>
using namespace std;
const long long N=200005,mod=1e9+7;
long long T,n,m,inv[N],fac[N],ans;
long long ksm(long long a,long long b)
{
long long r=1ll;
while(b)
{
if(b&1)
r=r*a%mod;
a=a*a%mod;
b>>=1;
}
return r;
}
long long C(long long n,long long m)
{
return fac[n]*inv[n-m]%mod*inv[m]%mod;
}
int main()
{
fac[0]=1;
for(int i=1;i<=N-5;i++)
fac[i]=fac[i-1]*i%mod;
inv[N-5]=ksm(fac[N-5],mod-2);
for(int i=N-6;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%mod;
scanf("%lld",&T);
while(T--)
{
scanf("%lld%lld",&n,&m);
if(m==1||n==1)
{
puts("1");
continue;
}
ans=0ll;
for(int x=1;x<=n;x++)
if(x>(n-x)/(m-1))
for(int k=0;n-(k+1)*x>=0;k++)
ans=(ans+((k&1)?-1:1)*C(m-1,k)*C(n-(k+1)*x+m-2,m-2))%mod;
printf("%lld\n",(ans%mod+mod)%mod);
}
return 0;
}

最新文章

  1. Python 启动本地服务
  2. JAVA 8 Lambda表达式-Lambda Expressions
  3. 后勤数据源增量队列Delta Queue(RSA7)中的增量更新区Delta Update、增量重复区Delta Repetition
  4. github中non-fast-forward错误的解决
  5. Spark RDD概念学习系列之RDD的依赖关系(宽依赖和窄依赖)(三)
  6. linux 命令小例
  7. bzoj3166
  8. Palindrome Permutation II 解答
  9. HTML之学习笔记(四)格式化标签和特殊字符
  10. 使用mysqlbinlog工具的基础上及时恢复数据的位置或点
  11. 解决GOOGLE不能用的办法
  12. R语言分析(二)——薛毅R语言第二章后面习题解析
  13. 关于MQ,你必须知道的
  14. 为什么 array.foreach 不支持 async/await
  15. LInux Zebra
  16. ZipUtil
  17. 003-linux命令-文件和目录、查看文件内容-文本处理
  18. 排序(Sort)-----冒泡排序
  19. @RunWith和 SpringJUnit4ClassRunner ----&gt;junit4和Spring一起使用
  20. Java数据结构和算法(一)散列表

热门文章

  1. MySQL命令行自动补全表名
  2. windows下开发PHP扩展dll(无需Cygwin)
  3. glTF格式初步了解
  4. 剑指Offer面试题15(Java版):链表中倒数第K个结点
  5. 工作总结 js 选择器选择多条元素 支持一起设置他们属性 $(&quot;#edumes input[type=&#39;radio&#39;]&quot;).prop(&quot;checked&quot;, false);
  6. linux nginx service nginx restart [fail]
  7. 【CSS3动画实战】Mailman Icon
  8. shell操作Hbase
  9. RDD变换
  10. (21) java web的struts2框架的使用-Action实现的三种方式