博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj] 牡牛和牝牛 题解
阅读量:5314 次
发布时间:2019-06-14

本文共 1612 字,大约阅读时间需要 5 分钟。

题目描述

 

原题来自:USACO 2009 Feb. Silver

牡 mǔ,畜父也。牝 pìn,畜母也。 ——《说文解字》

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

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

思路:
 
DP 做法 ,f[i] 表示第i头牛为牡牛的方案数.
sum[i]=f[1]+f[2]+...+f[i].
f[i]=sum[i-k-1]+1.
统计答案:ans+=f[i] 
记录每头牛为牡牛的方案数即可,不只是统计f[n]---->f[n-k]的方案数
因为这样忽略了n--->n-k头牛中没有牡牛的情况。
#include
#define ll long long #define R registerusing namespace std;const int N=100005;const int mod=5000011;int n,k,f[N],sum[N],ans,se=0;int main(){ scanf("%d%d",&n,&k);//第i头牛是 能 的方案数 for(R int i=1;i<=n;i++) { if(i-k-1>=1) f[i]=(sum[i-k-1]+1)%mod; else f[i]=1; sum[i]=(sum[i-1]+f[i])%mod; ans=(ans+f[i])%mod; } printf("%d",(ans+1)%mod); return 0;}

 

组合做法:
枚举i头牡牛,则(i-1)*k头牝牛是固定不变的。接下来就考虑 i 头牡牛 和剩余牝牛 的不全相异元素的全排列
假设n个球,n_1个球相同,n_2个球相同,----,n_m个球相同,排列数为:
n!/(n_1!*n_2!...*n_m!)
#include
#define ll long long #define R registerusing namespace std;const int N=1e6+1e5;const int mod=5000011;int n,k;ll ans=0,fac[N],inv[10000005];inline ll ksm(R ll x,R ll p){ R ll tot=1; while(p) { if(p&1) { tot=(tot*x)%mod; } x=(x*x)%mod; p>>=1; } return tot%mod;}int main(){ scanf("%d%d",&n,&k); fac[0]=fac[1]=1; for(R int i=2;i<=n+k+1;i++) { fac[i]=(fac[i-1]*i)%mod; } for(R int i=0;((i-1)*k+i)<=n;i++) { ans=(ans+(fac[n-(i-1)*k]*ksm((fac[i]*fac[(n-(i-1)*k-i)])%mod,mod-2)%mod)%mod)%mod; } printf("%lld",ans); return 0;}

 

 

转载于:https://www.cnblogs.com/sky-zxz/p/9877594.html

你可能感兴趣的文章
redis cluster 集群资料
查看>>
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
查看>>
jQuery总结或者锋利的jQuery笔记二
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
【Quartz】常用方法的使用方式(三)
查看>>
MVVM模式下关闭窗口的实现
查看>>
C#区域截图——调用API截图
查看>>
c#与java中byte字节的区别及转换方法
查看>>
A WebBrowser Toy
查看>>
用MyXls生成Excel报表(C#)
查看>>
了解WP的传感器
查看>>
阅读笔记 火球——UML大战需求分析 2
查看>>
acedEvaluateLisp函数的反汇编
查看>>
Linux无线工具详解(Wireless tools for Linux)
查看>>
ACM PKU 2328 http://acm.pku.cn/JudgeOnline/problem?id=2328
查看>>
VB.NET 制作DLL动态库文件
查看>>
RSS阅读器
查看>>
微信电脑版不断崩溃
查看>>