题目: 约翰要带 N只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛。牛们要站成一排,但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有
K 只牝牛。
请计算一共有多少种排队的方法,所有牡牛可以看成是相同的,所有牝牛也一样,答案对 5000011取模。
BZOJ3398

题解:(为了打字方便,下面的牡牛用公牛代替,牝牛用母牛代替)
最多能放n/(k+1) 头公牛
如果n%(k+1)!=0 则能放n/(k+1)+1头,证明很简单。
我们从1到上界枚举可以放的公牛头数,放a头公牛需要(a-1)*k头母牛,因为牛是一样的所以用n减去(a-1)*k就是剩下的可以放公牛的位置数
则放a头公牛的方案数为

所以直接计算即可

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=5000011;
ll ksm(ll a,ll b)
{ll ans=1;for(;b;b>>=1){ if(b&1) ans=ans*a%mod;a=a*a%mod;}return ans;
}
ll calc(ll m,ll n)
{ll sum1=1,sum2=1;if(m>n-m) m=n-m;for (ll i=1;i<=m;i++){(sum1*=(n-i+1))%=mod;(sum2*=i)%=mod;}return (sum1*ksm(sum2,mod-2))%mod;
}
int main()
{ll ans=0;int n,k;cin>>n>>k;int maxn=n/(k+1);if(maxn*(k+1)!=n) maxn++;for(int i=1;i<=maxn;i++)ans=(ans%mod+calc(i,n-k*i+k)%mod)%mod;cout<<(ans+1)%mod;return 0;
}

【组合数学】 牡牛和牝牛相关推荐

  1. 组合数学——牡牛和牝牛

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

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

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

  3. 一本通1652牡牛和牝牛

    1652:牡牛和牝牛 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:USACO 2009 Feb. Silver 牡 mǔ,畜父也.牝 pìn,畜 ...

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

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

  5. 【BZOJ3398】牡牛和牝牛

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

  6. DP + 前缀和 - 牡牛和牝牛 - AcWing 1307

    DP + 前缀和 - 牡牛和牝牛 - AcWing 1307 约翰要带 N 只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛. 牛们要站成一排,但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决 ...

  7. 牡牛和牝牛(信息学奥赛一本通 1652)

    [题目描述] 原题来自:USACO 2009 Feb. Silver 牡 mǔ,畜父也.牝 pìn,畜母也. --<说文解字> 约翰要带 N 只牛去参加集会里的展示活动,这些牛可以是牡牛, ...

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

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

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

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

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

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

最新文章

  1. 中文 iOS/Mac 开发博客列表
  2. LINUX下统计代码行数
  3. email邮件中 内嵌iframe_Python+Selenium执行结果,封装函数,用Python自动发送SMTP邮件...
  4. SQLi-LABS Less-2,联合注入+报错注入
  5. 根据用户名或者厂商名称生成相关的弱口令
  6. Pr常见问题,如何找回不小心删除的视频音频
  7. Python 密集知识点汇总
  8. Matlab连接字符串的方法
  9. OpenGL超级宝典(第7版)之清单的初始环境配置VS2019
  10. X5开发团队看板 维护工作 根据计划生成工作 部分代码
  11. Window Server 2008 概述
  12. canvas画线变粗变模糊的解决办法
  13. Debian参考手册读书摘要
  14. 关于dubbo快速开发和服务提供者无法注册上注意点
  15. 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)
  16. python网球比赛模拟主持稿_模拟课堂比赛主持人稿
  17. Win32程序设计初步之线程
  18. 流行的蓝光影片播放器推荐
  19. 计算机经典好书整理收集(持续更新中...)
  20. 线性变换及其基本性质

热门文章

  1. 360安全卫士卸载干净-笔记
  2. 问题随记 —— 无法打开包括文件: “dirent.h”: No such file or directory
  3. WinRAR 激活的小办法
  4. syslog工具_INAV:一款专用的日志审查导航工具
  5. 基于MATLAB产生式系统(植物识别系统)
  6. 全国大学生数学建模竞赛首战一等奖经验分享
  7. 单片机的c语言程序设计与应用考题,单片机的C语言程序设计与应用—基于Proteus仿真(第4版)...
  8. VB操作access数据库
  9. C++入门教程(一)
  10. 广告管理系统的UML分析与设计