【题目】

传送门

Description

约翰要带 n(1≤n≤100000)n(1≤n≤100000)n(1≤n≤100000) 只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛。牛们要站成一排。但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有 k(0≤k&lt;n)k(0≤k&lt;n)k(0≤k<n) 只牝牛。

请计算一共有多少种排队的方法。所有牡牛可以看成是相同的,所有牝牛也一样。答案对 500001150000115000011 取模。

Input

一行,输入两个整数 nnn 和 kkk。

Output

一个整数,表示排队的方法数。

Sample Input

4 2

Sample Output

6

HINT

666 种方法分别是:牝牝牝牝,牡牝牝牝,牝牡牝牝,牝牝牡牝,牝牝牝牡,牡牝牝牡

【分析】

牡(muˇmǔmuˇ)牛,公牛的意思,牝(pıˋnpìnpıˋn)牛,母牛的意思

好啦这不是这道题的重点,重点是这道题的算法

不难发现,如果有 xxx 头牡牛,一定会有 (x−1)⋅k(x-1)\cdot k(x−1)⋅k 头牝牛,也就是说牡牛只能在剩下的 n−(x−1)⋅kn-(x-1)\cdot kn−(x−1)⋅k 个位置上选,方案数就是 Cn−(x−1)⋅k&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;xC^{\;\;\;\;\;\;\;x}_{n-(x-1)\cdot k}Cn−(x−1)⋅kx​

那么循环枚举有多少个牡牛,按公式计算答案后累加,到 x&gt;n−(x−1)⋅kx&gt;n-(x-1)\cdot kx>n−(x−1)⋅k 退出就可以了

最后吐槽一下,数据范围是不是有误啊,数组开小导致 WA 了好久

【代码】

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1000005
#define Mod 5000011
using namespace std;
int fac[N],inv[N];
int Power(int a,int b)
{int ans=1;while(b){if(b&1)ans=1ll*ans*a%Mod;a=1ll*a*a%Mod;b>>=1;}return ans;
}
void prework()
{int i;fac[0]=fac[1]=1;for(i=2;i<N;++i)  fac[i]=1ll*fac[i-1]*i%Mod;inv[N-1]=Power(fac[N-1],Mod-2);for(i=N-2;~i;--i)  inv[i]=1ll*inv[i+1]*(i+1)%Mod;
}
int C(int n,int m)
{return 1ll*fac[n]*inv[m]%Mod*inv[n-m]%Mod;
}
int main()
{prework();int n,k,i,num,ans=1;scanf("%d%d",&n,&k);for(i=1;i<=n;++i){num=n-(i-1)*k;if(i>num)  break;ans=(ans+C(num,i))%Mod;}printf("%d",ans);return 0;
}

【Usaco 2009 Feb】Bullcow 牡牛和牝牛相关推荐

  1. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(DP)

    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 353  Solved: 248 ...

  2. 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛

    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 243  Solved: 167 ...

  3. [Usaco2009 Feb]Bullcow 牡牛和牝牛

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3398 容易想到的一种\(dp\)就是:设\(dp[i][j]\)表示前\(i\)头牛里面有 ...

  4. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...

  5. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛

    Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至 ...

  6. 【BZOJ】3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(排列组合+乘法逆元+欧拉定理/费马小定理)...

    http://www.lydsy.com/JudgeOnline/problem.php?id=3398 以下牡牛为a,牝牛为b. 学完排列计数后试着来写这题,"至少"一词可以给我 ...

  7. BZOJ3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛

    标签:DP,组合数学 Time Limit: 1 Sec  Memory Limit: 128MB Submit: 335  Solved: 235 [Submit][Status][Discuss] ...

  8. bzoj3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛

    Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至 ...

  9. BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution

    标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ...

最新文章

  1. 【实施工程师之家】linux安装tomcat(yum安装tomcat)
  2. 使用PowerMock模拟构造函数
  3. vfp 调用 mysql uft-8 connstring_(最全的数据库连接字符串)connectionstring
  4. 【赛事】京东百万巨奖寻多传感器融合定位算法英雄
  5. mds算法python函数_分享python mds,sha256加密算法,c#对应sha256加密算法
  6. 也来学学插件式开发续-利用MEF
  7. windows 自带计算器 calc 的使用
  8. 清空数据库中的某个表中数据
  9. 汉语中的通用量词:个,块
  10. oracle登录卡,【Oracle连接问题】关于windows xp3上oracle连接登录卡住的问题
  11. C# gdal创建和读取tiff文件
  12. timestamp与datetime的对比
  13. 从六度分隔到无尺度网络
  14. Python中歌词解析
  15. 2020最新苹果企业级开发者账号续费流程
  16. Android学习笔记之如何使用圆形菜单实现旋转效果...
  17. Redis源码阅读,从入门到放弃
  18. android id 重名_android 中不同的Xml中id可以重名吗?
  19. 小白从零开始学习区块链的个人笔记(一) 什么是区块链
  20. 【建议收藏】功率电子器件界面热阻和接触热阻是如何测量的?

热门文章

  1. HR管理的本质是激发每一个人的善意
  2. KeyXing魔兽显血改键工具|制作过程
  3. 移动固态硬盘中安装Ubuntu18.04,并且运行于其他电脑
  4. D. Unusual Sequences (数论,质因子分解,dp)
  5. PKI体系简易JAVA实现(一):时间戳服务器TSA
  6. opa847方波放大电路_采用电压反馈放大器OPA846、OPA847.ppt
  7. 中台的问题,是技术的问题,还是人的问题
  8. 单例模式的五种实现形式(懒汉式,饿汉式,双空判断,内部类,枚举)
  9. js逆向验证码篇之极验4代
  10. Linux配置JDK环境——步骤详解