[Usaco2009 Feb]Bullcow 牡牛和牝牛
原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3398
容易想到的一种\(dp\)就是:设\(dp[i][j]\)表示前\(i\)头牛里面有\(j\)头牡牛的方案数,那么转移方程就是:
\]
这里解释一下为什么是\(dp[i-k][j-1]\)。因为dp数组存的是方案数,而如果第i头牛要是牡牛,那么\(i-k\)~\(i-1\)头牛都必须是牝牛,也就是只有这一种方案。但如果由\(j-k\)后面的状态转移过来,比如\(j-k+1\),那么根据方程,这个状态包含了第\(j-k\)头牛为牡牛的情况,这是不合法的情况。又因为\(j-k\)之前的牛是什么牛都无所谓,所以应该从\(j-k\)的状态转移过来。
然后你发现这样开数组会爆空间,时间也会爆。然而我们发现,第i头牛是牡牛时,我们只需要知道第\(i-k\)头牛不是牡牛的方案数即可,与前面有几头牡牛无关。那么我们换一种状态,设\(dp[i][0/1]\)表示第i头牛是牝牛/牡牛的方案数。转移方程类似:
dp[i][1]=dp[i-k][0];
\]
时间复杂度为\(O(N)\)
#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 100010
#define mod 5000011
using namespace std;
inline int read(){
register int x(0),f(1); register char c(getchar());
while(c<'0'||'9'<c){ if(c=='-') f=-1; c=getchar(); }
while('0'<=c&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}
long long dp[maxn][2];
int n,k;
int main(){
n=read(),k=read();
dp[0][0]=1;
for(register int i=1;i<=n;i++){
dp[i][0]=(dp[i-1][0]+dp[i-1][1])%mod;
dp[i][1]=dp[ max(0,i-k) ][0];
}
printf("%lld\n",(dp[n][0]+dp[n][1])%mod);
return 0;
}
[Usaco2009 Feb]Bullcow 牡牛和牝牛的更多相关文章
- BZOJ3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 30 Solved: 17[Sub ...
- BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )
水题...忘了取模就没1A了.... --------------------------------------------------------------------------- #incl ...
- 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 243 Solved: 167[S ...
- BZOJ_3398_[Usaco2009 Feb]Bullcow 牡牛和牝牛_组合数学
BZOJ_3398_[Usaco2009 Feb]Bullcow 牡牛和牝牛_组合数学 Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛, ...
- bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...
- 【BZOJ】3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(排列组合+乘法逆元+欧拉定理/费马小定理)
http://www.lydsy.com/JudgeOnline/problem.php?id=3398 以下牡牛为a,牝牛为b. 学完排列计数后试着来写这题,“至少”一词可以给我们提示,我们可以枚举 ...
- bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...
- BZOJ3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(dp)
题意 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有K( ...
- BZOJ 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛:dp【前缀和优化】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3398 题意: 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡 ...
随机推荐
- phpStudy后门分析及复现
参考文章:https://blog.csdn.net/qq_38484285/article/details/101381883 感谢大佬分享!! SSRF漏洞学习终于告一段落,很早就知道phpstu ...
- python爬虫之解析链接
解析链接 1. urlparse() & urlunparse() urlparse() 是对url链接识别和分段的,API用法如下: urllib.parse.urlparse(urlstr ...
- Excel-RANK函数排名与拓展
问题场景 需求不同根据总分出排名(从大到小100分.100分.99分.98分.97分),排名需求: 第一种排名:第1名,第2名,第3名,第4名,第5名: 第二种排名:第1名,第1名,第3名,第4名,第 ...
- idea 中在src/main/java中的xml扫描不到问题
<build> <!-- start idea 默认 不加载 java下的配置文件 --> <resources> <resource> <dir ...
- java使用map去重复
public class Test { public static void main(String[] args) { Map<Number, String> map1 = new Ha ...
- ArrayListHashmap嵌套
package arrayListHashMap; import java.util.ArrayList; import java.util.HashMap; import java.util.Map ...
- RTC_Configuration
Void RTC_Configuration(void)// 实时时钟的初始化配置 { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Peri ...
- LINUX五中IO模型
阻塞IO模型 用户空间调用recvfrom命令 直到数据包到达且被复制到应用进程的缓冲区或发生错误时才返回,这个过程中 进程亦或线程一直处于等待阻塞状态. 2.非阻塞IO模型 用户空间调用内核指令re ...
- Rejecting mapping update to [xxx] as the final mapping would have more than 1 type: [xxx, xx]
说明: 1.elasticsearch 版本 6.3.1 2.在同一个index下创建两个type时报错,信息如下: 在创建第二个type:solr时,先前已经在相同索引下创建了一个type:es [ ...
- 二、集群配置SSH免密登录
一.以3个几点为例,分别为master.slave01.slave02 1.分别生成自己节点密钥对 master: 创建dsa免密代码:ssh-keygen -t dsa -P '' -f ~/.ss ...