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

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 243  Solved: 167
[Submit][Status][Discuss]

Description

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

Input

一行,输入两个整数N和K.

Output

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

Sample Input

4 2

Sample Output

6
样例说明
6种方法分别是:牝牝牝牝,牡牝牝牝,牝牡牝牝,牝牝牡牝,牝牝牝牡,牡牝牝牡

HINT

Source

Silver

/*
以下牡牛为a,牝牛为b。
学完排列计数后试着来写这题,“至少”一词可以给我们提示,我们可以枚举a为x头(x>1),然后算出对应的排列累计起来。
对于x头a,首先我们先缩掉必要的k头牛(x-1)*k,然后这时可以特判可以先结束(因为单调的),然后在缩好后的x个点和n-x-(x-1)*k个点进行多重排列就行了。
逆元:a^(phi(n)-1) mod n
*/
#include<cstdio>
#include<iostream>
using namespace std;
const int mod=5000011;
typedef long long ll;
int n,k;ll ans;
ll fpow(ll a,ll p){ll res=1;for(;p;p>>=1,a=a*a%mod) if(p&1) res=res*a%mod;return res;
}
ll C(ll n,ll m){m=min(m,n-m);ll r1=1,r2=1;for(ll i=n-m+1;i<=n;i++) r1=r1*i%mod;for(ll i=1;i<=m;i++) r2=r2*i%mod;return r1*fpow(r2,mod-2);
}
int main(){scanf("%d%d",&n,&k);for(ll i=0;i<=n;i++){ll t=n-(i-1)*k;if(t<i) break;ans=(ans+C(t,i))%mod;}cout<<ans;return 0;
}

/*
DP:
设 f[i]表示取的最后一个数是i的方案数
则 f[i]=siama(f[j]) i-j>k
*/
#include<cstdio>
#define mod 5000011
using namespace std;
int n,k,f[(int)1e5+5];
int main(){scanf("%d%d",&n,&k);f[0]=1;int sum=1,ans=1;for(int i=1;i<=n;i++){if(i>k+1) sum=(sum+f[i-k-1])%mod;f[i]=sum;ans=(ans+f[i])%mod;}printf("%d\n",ans); return 0;
}

转载于:https://www.cnblogs.com/shenben/p/6286551.html

3398: [Usaco2009 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. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

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

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

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

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

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

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

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

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

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

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

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

  8. 【Usaco 2009 Feb】Bullcow 牡牛和牝牛

    [题目] 传送门 Description 约翰要带 n(1≤n≤100000)n(1≤n≤100000)n(1≤n≤100000) 只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站 ...

  9. 【BZOJ3398】牡牛和牝牛

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

最新文章

  1. u-boot之怎么实现分区
  2. ERP物料采购系统需求分析与效果展示 ERP实施以失败告终的四个原因分析
  3. Istio 从懵圈到熟练:二分之一活的微服务
  4. NJ4X源码阅读分析笔记系列(三)—— nj4x-ts深入分析
  5. eclipse下开发简单的Java Web Service
  6. 做游戏,学编程(C语言) 9 贪吃蛇
  7. gdb调试中出现optimized out
  8. Java Unable to load library ‘gsdll64‘: 报错,解决方案
  9. Java IO-03 字节流和字符流
  10. 论文助手 for word/wps
  11. 未来教育计算机二级题库如何更新,未来教育的计算机二级题库准吗?
  12. 家用wifi的配置和重置
  13. 数学在计算机领域的应用,浅析数学在计算机领域中的重要性
  14. 火遍全网的「蚂蚁呀嘿」教程开源了!
  15. java后端工程师主流技术
  16. 中国移动的指令大全!(不再需要人工台)
  17. html中微博发布怎么做,js实现微博发布小功能
  18. oracle变成大写快捷键,Oracle函数(把每个单词首个字母变为大写)
  19. 鼻炎舒宁治过敏性鼻炎
  20. Echarts柱状图百分比显示

热门文章

  1. vue中使用echarts实现中国地图加城市定位功能
  2. 目标公司--软件测试--jd补充
  3. 2009世界500强:《财富》全球五百家公司排名
  4. 面试之类别数据处理(one-hot、embedding)
  5. knife4j:快速入门
  6. 计算机大学生个人发展与规划,大学生个人发展规划
  7. 培养气质的99个好习惯
  8. loadrunner的吞吐量和吞吐率
  9. 计算机接口IDE接什么,IDE接口硬盘数据线_IT /计算机_数据的正确连接方法
  10. win10解除安全模式