• JZOJ 1292. 公牛和母牛


    题目

    Description

      FJ想N头牛(公牛或母牛)排成一排接受胡总的检阅,经研究发现公牛特别好斗,如果两头公牛离得太近就会发生冲突,通过观察两头公牛之间至少要有K(0<=K<=N)头母牛才能避免冲突。
      FJ想请你帮忙计算一共有多少种放置方法,注意所有的公牛被认为是一样的,母牛也是,所以两种放置方法被认为不同当且仅当某些位置牛的种类不同。
     

    Input

      第一行:两个空格隔开的整数N(N<=100000)和K。

    Output

      输出一个整数表示方法总数,答案可能很大,所以只需输出mod 5,000,011的值即可。
     

    Sample Input

    4 2

    Sample Output

    6
     

    Data Constraint

     
     

    Hint

    【样例说明】
    以下为6种放置方法,‘B’表示公牛,‘C’表示母牛
    CCCC
    BCCC
    CBCC
    CCBC
    CCCB
    BCCB

     

    分析

     

    • 递推
    • 当1-k f[i]=i+1;
    • >k f[i]=f[i-1]+f[i-k-1]

     

    代码

     1 #include <cmath>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 const int MOD = 5000011;
     7 using namespace std; 
     8 int f[100001];
     9 int main(){
    10     int n,k;
    11     scanf("%d%d",&n,&k);
    12     for (int i=0;i<=n;i++)
    13     {
    14         if (i<=k) f[i]=i+1;
    15         else f[i]=(f[i-1]+f[i-k-1])%MOD;
    16     }
    17     cout<<f[n];
    18     return 0;
    19 }

     

  • 相关阅读:
    for循环之初学者N多算法小练习
    Java数据类型(基本数据类型)学习
    Windows10 图标重建
    springMVC框架搭建
    Spring框架 jar包下载
    Hibernate配置文件中配置各种数据库链接
    Ajax第一课
    Windows 10 碎片整理程序使用
    python之restful api(flask)获取数据
    谷歌浏览器安装扩展程序
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11773707.html
Copyright © 2020-2023  润新知