zoukankan      html  css  js  c++  java
  • 【OpenJudge9267】【递推】核电站

    核电站

    总时间限制: 5000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB

    【描述】

    一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。

    任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数 

    【输入】

    只一行,两个正整数N,M( 1 < N < 50,2 ≤ M ≤ 5 )

    【输出】

    一个正整数S,表示方案总数。

    【样例输入】

    4 3

    【样例输出】

    13

    【Solution】

      dp[i]表示到第i个坑的方案数。首先考虑i<M的情况,即每个坑放或不放都可,共(1<<i)或dp[i]=dp[i-1]*2种方案。然后考虑i>=M的情况,用所有的方案数减去不合法的方案数dp[i]=dp[i-1]*2-dp[i-M-1]即可。

      AC代码:

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 int N,K;
     5 long long dp[110]; 
     6 int main(){
     7     scanf("%d%d",&N,&K); dp[1]=2; dp[0]=1; dp[-1]=1;
     8     for(int i=2;i<K;++i) dp[i]=dp[i-1]<<1;
     9     for(int i=K;i<=N;++i) dp[i]=(dp[i-1]<<1)-dp[i-K-1];
    10     printf("%lld",dp[N]);
    11     return 0;
    12 }
  • 相关阅读:
    centos6升级内核
    centos7启动盘制作
    sed匹配字符串并将匹配行的后几行注释
    cmd下调用xshell登录linux服务器
    centos清除历史命令
    yum错误Cannot retrieve metalink for repository: epel/x86_6
    ansible-playbook
    jdk升级到1.8
    shell瞎记录
    shell 循环
  • 原文地址:https://www.cnblogs.com/reddest/p/6002902.html
Copyright © 2011-2022 走看看