题意:n个数中不能同时选连续m个或以上,问方案数。

解法:f[i][j]表示从前i个中选,到第i个已经连续选了j个。
j!=0时,  =f[i-1][j-1] ; j=0时, =f[i-1][0~m-1] ;

优化1:f[i][m]存f[i-1][0~m-1],就不用多for一重。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 using namespace std;
5
6 long long f[55][10];
7 int main()
8 {
9 int n,m;
10 scanf("%d%d",&n,&m);
11 f[1][0]=f[1][1]=1,f[1][m]=2;
12 for (int j=2;j<m;j++) f[1][j]=0;
13 for (int i=2;i<=n;i++)
14 {
15 long long h=0;
16 f[i][0]=f[i-1][m];
17 f[i][1]=f[i-1][0];
18 h=f[i][0]+f[i][1];
19 for (int j=2;j<m;j++)
20 {
21 f[i][j]=f[i-1][j-1];
22 h+=f[i][j];
23 }
24 f[i][m]=h;
25 }
26 printf("%lld\n",f[n][m]);
27 return 0;
28 }

1

优化2:(由上面的方程推出)f[i]表示从前i个数中合法的方案数,即之前的f[i][m]。

i<m时,f[i]=2*f[i-1];每次对于第i个数可选或不选,方案数都各为f[i-1]。
i>=m时,则再-f[i-m-1];由于i=m时,i-m-1<0则单独写出了来-1(1~m的数都选的状态)。
可知-f[i-m-1]是因为每次f[i-1][]中不合法的都是f[i-1][m-1],而它也是从最初的  f[i-1][m-1]=f[i-2][m-2]=  ...  =f[i-m][0]=f[i-m-1][0~m-1]=f[i-m-1][m]连等上来的,也就是说要减去已经连续选了m-1个的方案数:f[i-m-1]。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 using namespace std;
5
6 long long f[55];
7 int main()
8 {
9 int n,m;
10 scanf("%d%d",&n,&m);
11 f[0]=1;
12 for (int i=1;i<=m;i++) f[i]=2*f[i-1];
13 f[m]--;
14 for (int i=m+1;i<=n;i++) f[i]=2*f[i-1]-f[i-m-1];
15 printf("%lld\n",f[n]);
16 return 0;
17 }

2

注意——f[n][m]不是答案最大的状态,而是f[n][1]。因此看是否要用long long得看f[n][1]......

最新文章

  1. Puppet简易入门
  2. 【C#进阶系列】01 CLR的执行模型——一个Hello World的故事
  3. Spring核心概念之AOP
  4. Autofac的注入和web.config配合
  5. oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
  6. 14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:
  7. fstream 学习
  8. 最新 Zookeeper + Flume + Kafka 简易整合教程
  9. python中with学习
  10. 经典栈溢出之MS060-040漏洞分析
  11. WebRTC MCU( Multipoint Conferencing Unit)服务器调研
  12. WPF软件开发系统之五——展会展厅触摸屏企业产品宣传展示系统
  13. pycharm中查找一个对象在哪里被引用
  14. 解决ssh连接问题1
  15. 用织梦建站如何去掉a这个目录,还有内容页的a
  16. 创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
  17. datatables后端分页
  18. pacman详解及常见问题
  19. 在Mac终端显示 Git 当前所在分支
  20. 如何查看sonarqube的版本

热门文章

  1. 聊聊 g0
  2. requests +httprunne r
  3. 在 Azure 上执行一些简单的 python 工作
  4. 终于可以愉快的撸Java异步代码了!
  5. SDUST数据结构 - chap3 栈和队列
  6. ASP.NET Core错误处理中间件[3]: 异常处理器
  7. 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
  8. 对象存储 COS 帮您轻松搞定跨域访问需求
  9. Linux网卡没有eth0显示ens33原因以及解决办法
  10. (转载)微软数据挖掘算法:Microsoft 决策树分析算法(1)