K上升段

问题描述:
对于n的一个全排列,如果它可以划分成k个单调递增序列,每个序列都尽可能最长,则称其为k上升段。例如:排列1 2 4 5 6 3 9 10 7 8是一个合法的3上升段,它可以划分成1 2 4 5 6;3 9 10;7 8这三个单调递增序列。对每个给定的(n,k),请你给出n的所有k上升段的个数。

输入格式:
输入仅有1行,包含两个数n, k(1 < n < 20, 1 < k < n)。

输出格式:
输出n的所有k上升段的个数。

样例
输入:
3 2
输出:
4
( 说明,符合条件的排列是132,312,213,231)

这道题不用深搜,用dp

对于一个全排列i,假设划分成了j段。

那么如果在每一段的末尾加一个数,那么就可以变成i+1个数的划分成为j段。

还有,如果在每一个头,或者非段末加入,那么就可以变成i+1个全排列划分成了j+1段

对于每一个位置,都可以是一种方案书,那么这就是加法原理和乘法原理

设dp(i,j)表示对于第i个数,划分成j段的方案数

dp(i,j)=dp(i-1,j)*j+dp(i-1,j-1)*(i-j+1)

码量很少附上代码

#include<cstdio>
#include<algorithm>
#define N 20+1
#define ll long long
using namespace std;
ll f[N][N];
int main()
{int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)f[i][1]=f[i][i]=1;for(int i=2;i<=n;i++)for(int j=1;j<i;j++)f[i][j]=f[i-1][j]*j+f[i-1][j-1]*(i-j+1);printf("%lld",f[n][k]);
}

转载于:https://www.cnblogs.com/star-eternal/p/7581477.html

k上升段,对于排列问题的处理相关推荐

  1. 重启计算机后桌面顺序是反的,Win10系统为什么重启电脑之后桌面上的图标排列顺序被打乱该如何处理...

    导语:许多盆友发觉在应用Win10系统时,重新启动以后桌面图标越来越错乱,针对桌面图标不多的盆友而言还行,如果多的客户那简直十分烦闷的事儿,下面白豆芽就和大家分享Win10系统为什么重启电脑之后桌面上 ...

  2. spine 所有动画的第一帧必须把所有能K的都K上

    spine 所有动画的第一帧必须把所有能K的都K上.否则在快速切换动画时会出问题. 转载于:https://www.cnblogs.com/wantnon/p/4519882.html

  3. [2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)

    文章目录 T1:复读数组 题目 题解 代码实现 T2:路径计数机 题目 题解 代码实现 T3:排列计数机 题目 题解 CODE T1:复读数组 题目 有一个长为n×k的数组,它是由长为n的数组A1,A ...

  4. Python编程——星星: 找一副星星图像,并在屏幕上显示一系列排列整齐的星星

    注:本题目为书籍 Python 编程 从入门到实践 练习题 1. 流程图 2. 程序 2.1 屏幕参数 import pygameclass StarSettings:def __init__(sel ...

  5. LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组

    937. 重新排列日志文件 2022.5.3 每日一题 题目描述 给你一个日志数组 logs.每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 . 有两种不同类型的日志: 字母日志: ...

  6. 「营业日志 2020.12.10」Jiangly 的排列数数题

    问对于所有长为 nnn 的排列,有多少排列存在一个连续上升段 ≥k\ge k≥k.对所有 kkk 回答,对大质数取模. 首先经过转化,只需要数所有连续段均 <k<k<k 的即可.容易 ...

  7. 【组合数学】集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | 二项式定理 )

    文章目录 一.集合排列 和 多重集排列问题 1 二. 集合排列 和 多重集排列问题 2 三. 找一一对应计算集合排列问题 ( 反向计算 ) 四. 圆排列问题 1 五. 集合交替排列问题 六. 圆排列问 ...

  8. Jzoj5235 好的排列

    对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai.对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列. 现在有q个询问 ...

  9. 数据结构与算法--二叉树第k个大的节点

    二叉树第k个大的节点 二叉树文章列表: 数据结构与算法–面试必问AVL树原理及实现 数据结构与算法–二叉树的深度问题 数据结构与算法–二叉堆(最大堆,最小堆)实现及原理 数据结构与算法–二叉查找树转顺 ...

最新文章

  1. Python设计模式-中介者模式
  2. 在游戏里还原自己的脸,给AI一张照片就行,网易密歇根大学出品 | AAAI 2021
  3. Linux 搜索指令
  4. java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
  5. 大数据数据量估算_如何估算数据科学项目的数据收集成本
  6. MySQL索引底层原理理解以及常见问题总结
  7. 【AngularJs学习笔记五】AngularJS从构建项目开始
  8. 《ggplot2:数据分析与图形艺术》,读书笔记
  9. javascript 中的location.pathname
  10. mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍
  11. MongoDB 3.2 On CentOS
  12. access 分表存储_数据库分区、分表、分库、分片
  13. IOS开发学习笔记(一)——ObjectC语言快速入门
  14. LoRa无线通信设计(一)原理
  15. android输入法剪切板历史记录,干货分享 讯飞输入法剪切板使用技巧知多少
  16. ARM920T及其MMU,Cache学习杂记(一)
  17. 怎么把PDF文件转换成图片?这两种方法可以收藏下来
  18. 推荐10款社群运营必备工具
  19. html中seo三大标签,探索者SEO告诉你三大标签如何正确使用
  20. 河北科技大学电子商务马志伟

热门文章

  1. 回家了,写博文继续!
  2. 第五课 vim基本用法、bash编程初步和for循环
  3. Oracle 11G 64位发布出现错误
  4. inetd -- internet超级服务器
  5. Mike Krueger 加入Mono团队
  6. mysql 字符串 底层_Mysql 的索引底层原理及数据结构详解
  7. 如何查看kafka每个话题一共分了几个分区_如何决定kafka集群中话题的分区的数量...
  8. 计算机基础知识教程 百度,28、如何上网--电脑基础知识
  9. mysql联表查球队比分_mysql – 什么可以导致连接比分为两个查询慢?
  10. Python基础100题