题面:


solution:

这题和斐波那契数列没有任何关系!!!!!
这题就是一个无脑DP!!!!!!!!!!

因为所有数都要出现至少一次,所以只需考虑其组合而不用考虑其排列,最后乘个 n!就是了(意思就是可以当做这 N 个数是无序的)
dp[i][j]表示前 i 个序列放了 j 种数的方案数,所以在放第 i+1 个数的时候有两种选择

  1. 放一个新的数 则状态变到 dp[i+1][j+1]
  2. 放一个前面有的数 则状态变到 dp[i+1][j]
    对于第一种转移情况有 dp[i+1][j+1]+=dp[i][j]
    而对于第二种转移情况 为了满足最小间隔的要求 所以序列末尾的 M 种数是不可以放
    的 因此可供选择的数有(j-M)种 即 dp[i+1][j] += dp[i][j](j-M)
    算完之后 dp[P][N]
    N!就是结果

code:

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>#define ll long long
#define db double
#define inf 0x7fffffff
#define rg register int
#define mod 1000000007using namespace std;int n,m,l;
ll ans=1;
ll f[1005][1005];inline int qr(){char ch;while((ch=getchar())<'0'||ch>'9');int res=ch^48;while((ch=getchar())>='0'&&ch<='9')res=res*10+(ch^48);return res;
}int main(){//freopen("pf.in","r",stdin);//freopen("pf.out","w",stdout);n=qr(),m=qr(),l=qr();f[1][1]=1;for(rg i=1;i<l;++i){for(rg j=1;j<=n;++j){if(!f[i][j])continue;if(j<n)f[i+1][j+1]+=f[i][j];if(j>m)f[i+1][j]+=f[i][j]*(j-m)%mod;}}ans=f[l][n];for(rg i=1;i<=n;++i)ans=ans*i%mod;printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/812-xiao-wen/p/10322124.html

CodeAction_beta02 斐波那契 (多维DP)相关推荐

  1. Fibonacci斐波拉契数列----------动态规划DP

    n==10 20 30 40 50 46 体验一下,感受一下,运行时间 #include <stdio.h> int fib(int n) { if (n<=1)     retur ...

  2. 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。

    爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...

  3. 带记忆化搜索的斐波那契数列

    带记忆化搜索的斐波那契数列 //通过dp数组保留部分结果,动态规划避免大量重复性操作#include <cstdio> #include <iostream> #include ...

  4. [ZJOI2011]细胞——斐波那契数列+矩阵加速+dp

    Description bzoj2323 Solution 题目看起来非常复杂. 本质不同的细胞这个条件显然太啰嗦, 是否有些可以挖掘的性质? 1.发现,只要第一次分裂不同,那么互相之间一定是不同的( ...

  5. Xorequ(BZOJ3329+数位DP+斐波那契数列)

    题目链接 传送门 思路 由\(a\bigoplus b=c\rightarrow a=c\bigoplus b\)得原式可化为\(x\bigoplus 2x=3x\). 又异或是不进位加法,且\(2x ...

  6. C语言DP备忘计算指数N的斐波那契级数的算法(附完整源码)

    C语言DP备忘计算指数N的斐波那契级数的算法 C语言DP备忘计算指数N的斐波那契级数的算法完整源码(定义,实现,main函数测试) C语言DP备忘计算指数N的斐波那契级数的算法完整源码(定义,实现,m ...

  7. 剑指 Offer 10- I. 斐波那契数列 (从重叠子问题到备忘录到dp数组迭代解法)

    目录 题目描述 1.暴力递归法的重叠子问题 2.备忘录解法 3.dp数组迭代算法 4.滚动数组优化 5.参考链接 题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐 ...

  8. D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

    DP理论基础 重要知识点: 1.动规和贪心的区别:动规是由前一个状态推导出来的,而贪心是局部直接选最优的 2.动规五部曲: 1)确定dp数组(dp table)以及下标的含义 2)确定递推公式 3)d ...

  9. 计算斐波那契数列第100项(二维数组思维转换)

    斐波那契数列第100项肯定很多位,常规的数据类型肯定存储不下,所以!!要进行换个思路!!即二维数组 反正我觉得这样还挺方便的咯 用二维数组的每一行存储每一项的值,从每一行的最后一列开始,如果>1 ...

最新文章

  1. 谈几个初学者混淆不清的问题
  2. 百度Apollo飘了!在京开启全无人RoboTaxi体验,车型还能选,原因竟是嫌40万人次体验不够...
  3. php面向对象(OOP)---- 验证码类
  4. JAVA虚拟机的重要组成
  5. 富士施乐3065扫描教程_全面支持IT国产化 富士施乐70款机型获统信UOS兼容认证
  6. 入门第十一课 Python语句的嵌套
  7. Broker模块划分
  8. SDK里报错[NSConcreteMutableData wbsdk_base64EncodedString]
  9. 拓端tecdat|R语言多维数据层次聚类散点图矩阵、配对图、平行坐标图、树状图可视化城市宏观经济指标数据
  10. html5调用系统声音1s响一次_为你的html5网页添加音效示例
  11. 基于FPGA的车牌识别
  12. 对象转map工具类BeanUtil
  13. LabVIEW在无线设备中的应用
  14. 【2022国赛模拟】摆(bigben)——行列式、杜教筛
  15. 大学生计算机基础大难,大学生计算机基础实训六样文
  16. Matlab怎么从table变成matrix
  17. Feedback Prize-Kaggle比赛调研
  18. ZSTU 4514: yesky wine锦鲤卡 (线性dp)
  19. 如何带领小微企业在软件开发行业生存
  20. 三层交换机和lacp链路聚合

热门文章

  1. vc的速度有c语言快吗,大家帮看看,怎么回事?Delphi竟比vc++还快
  2. boot项目中pom依赖已经删除了但是maven上还是报红线_Java Web项目是怎么跑起来的?...
  3. 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
  4. 阿里云服务器(Ubuntu16.04 64位)远程连接
  5. php 输出去掉 字符,PHP:如何删除字符串中所有不可打印的字符?
  6. vlan配置实例详解_【精品网络干货】二层MSTP防环技术详解
  7. tar -xf_青铜表选什么?不可错过的XF帝舵碧湾小铜盾
  8. 网卡清空缓存命令_九个常用的网络命令 ,很实用!
  9. 骂骂咧咧的 fastreport 数据隔行换色
  10. 进阶学习(3.7) Flyweight Pattern 享元模式