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 }
  • 相关阅读:
    SSD
    NMS---非极大值抑制
    检测评价函数 IOU
    Ground Truth
    耿建超英语语法---状语从句
    联合索引创建时候的排序规则
    order by limit的原理
    mysql事务四种隔离级别
    为什么 Redis 快照使用子进程
    MYSQL查询~ 存在一个表而不在另一个表中的数据
  • 原文地址:https://www.cnblogs.com/reddest/p/6002902.html
Copyright © 2011-2022 走看看