http://codevs.cn/problem/2618/

 时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 Description

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

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

输入描述 Input Description

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

输出描述 Output Description

输出文件只有一个正整数S,表示方案总数。

样例输入 Sample Input

4 3

样例输出 Sample Output

13

数据范围及提示 Data Size & Hint

( 1<N<50,2≤M≤5)

f[n][i]表示这n个坑,有i个连续放着物品。

明显地存在  f[n][0]=Σf[i][0],  f[n][i]=f[n-1][i-1]。

 #include <cstdio>

 inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} #define LL long long
int n,m;
LL sum[][],ans; LL DFS(int now,int cnt)
{
if(now<cnt) return ;
if(sum[now][cnt]) return sum[now][cnt];
if(!cnt)
for(int i=; i<m; ++i)
sum[now][cnt]+=DFS(now-,i);
else sum[now][cnt]=DFS(now-,cnt-);
return sum[now][cnt];
} int AC()
{
read(n),read(m);
sum[][]=sum[][]=;
for(int i=; i<m; ++i)
ans+=DFS(n,i);
printf("%lld\n",ans);
return ;
} int Aptal=AC();
int main(){;}

记忆化搜索

 #include <cstdio>

 inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} #define LL long long
int n,m;
LL f[][],ans; int AC()
{
read(n),read(m);
f[][]=f[][]=f[][]=;
for(int i=; i<=n; ++i)
{
for(int j=; j<=i&&j<m; ++j)
if(!j) f[i][j]+=f[i-][j];
else
{
f[i][]+=f[i-][j];
f[i][j]=f[i-][j-];
}
}
for(int i=; i<m; ++i) ans+=f[n][i];
printf("%lld\n",ans);
return ;
} int Aptal=AC();
int main(){;}

DP

最新文章

  1. vmware workstation unrecoverable error: (vmui)报错解决方法
  2. awk 统计出现次数--转
  3. User Profile Service Application 配置同步连接时,报 MOSS MA not found
  4. Lotus分析
  5. Android(java)学习笔记177:BroadcastReceiver之 应用程序安装和卸载 的广播接收者
  6. 微信中web页面实现和公众号中查看图片一样的效果
  7. SEOer怎样安排一天的工作
  8. httpd2.4.6配置文件解释说明
  9. [ 中危 ] 发布处存在CSRF及CSRF设想
  10. 从零开始学 Web 之 HTML(三)表单
  11. 搭建ssm框架
  12. Windbg简明教程(转)
  13. jmter提交图片
  14. git revert
  15. 浅谈回归(二)——Regression 之历史错误翻译
  16. Linux_脚本——使用echo从一个文件写入还有一个文件末尾
  17. Luogu 3627 [APIO2009]抢掠计划
  18. C# SendMessage用法一二
  19. Map详解
  20. Android Spinner组件的使用方法

热门文章

  1. B1230 [Usaco2008 Nov]lites 开关灯 线段树
  2. 把一个文件夹下的多个csv文件合并到一个excel的多个sheet
  3. iOS沙盒及数据存储
  4. node.js怎么配置访问本地的html文件?
  5. git clone 出现错误
  6. oracle命令行登录(默认用户名和密码)
  7. [转]SQLServe 存储表结构的几个系统表
  8. AFN上传多张图片
  9. android指纹识别、拼图游戏、仿MIUI长截屏、bilibili最美创意等源码
  10. [2月1号] 努比亚全机型ROM贴 最全最新NubiaUI5.0 ROOT 极速体验