k上升段,对于排列问题的处理
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上升段,对于排列问题的处理相关推荐
- 重启计算机后桌面顺序是反的,Win10系统为什么重启电脑之后桌面上的图标排列顺序被打乱该如何处理...
导语:许多盆友发觉在应用Win10系统时,重新启动以后桌面图标越来越错乱,针对桌面图标不多的盆友而言还行,如果多的客户那简直十分烦闷的事儿,下面白豆芽就和大家分享Win10系统为什么重启电脑之后桌面上 ...
- spine 所有动画的第一帧必须把所有能K的都K上
spine 所有动画的第一帧必须把所有能K的都K上.否则在快速切换动画时会出问题. 转载于:https://www.cnblogs.com/wantnon/p/4519882.html
- [2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)
文章目录 T1:复读数组 题目 题解 代码实现 T2:路径计数机 题目 题解 代码实现 T3:排列计数机 题目 题解 CODE T1:复读数组 题目 有一个长为n×k的数组,它是由长为n的数组A1,A ...
- Python编程——星星: 找一副星星图像,并在屏幕上显示一系列排列整齐的星星
注:本题目为书籍 Python 编程 从入门到实践 练习题 1. 流程图 2. 程序 2.1 屏幕参数 import pygameclass StarSettings:def __init__(sel ...
- LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组
937. 重新排列日志文件 2022.5.3 每日一题 题目描述 给你一个日志数组 logs.每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 . 有两种不同类型的日志: 字母日志: ...
- 「营业日志 2020.12.10」Jiangly 的排列数数题
问对于所有长为 nnn 的排列,有多少排列存在一个连续上升段 ≥k\ge k≥k.对所有 kkk 回答,对大质数取模. 首先经过转化,只需要数所有连续段均 <k<k<k 的即可.容易 ...
- 【组合数学】集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | 二项式定理 )
文章目录 一.集合排列 和 多重集排列问题 1 二. 集合排列 和 多重集排列问题 2 三. 找一一对应计算集合排列问题 ( 反向计算 ) 四. 圆排列问题 1 五. 集合交替排列问题 六. 圆排列问 ...
- Jzoj5235 好的排列
对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai.对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列. 现在有q个询问 ...
- 数据结构与算法--二叉树第k个大的节点
二叉树第k个大的节点 二叉树文章列表: 数据结构与算法–面试必问AVL树原理及实现 数据结构与算法–二叉树的深度问题 数据结构与算法–二叉堆(最大堆,最小堆)实现及原理 数据结构与算法–二叉查找树转顺 ...
最新文章
- Python设计模式-中介者模式
- 在游戏里还原自己的脸,给AI一张照片就行,网易密歇根大学出品 | AAAI 2021
- Linux 搜索指令
- java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
- 大数据数据量估算_如何估算数据科学项目的数据收集成本
- MySQL索引底层原理理解以及常见问题总结
- 【AngularJs学习笔记五】AngularJS从构建项目开始
- 《ggplot2:数据分析与图形艺术》,读书笔记
- javascript 中的location.pathname
- mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍
- MongoDB 3.2 On CentOS
- access 分表存储_数据库分区、分表、分库、分片
- IOS开发学习笔记(一)——ObjectC语言快速入门
- LoRa无线通信设计(一)原理
- android输入法剪切板历史记录,干货分享 讯飞输入法剪切板使用技巧知多少
- ARM920T及其MMU,Cache学习杂记(一)
- 怎么把PDF文件转换成图片?这两种方法可以收藏下来
- 推荐10款社群运营必备工具
- html中seo三大标签,探索者SEO告诉你三大标签如何正确使用
- 河北科技大学电子商务马志伟
热门文章
- 回家了,写博文继续!
- 第五课 vim基本用法、bash编程初步和for循环
- Oracle 11G 64位发布出现错误
- inetd -- internet超级服务器
- Mike Krueger 加入Mono团队
- mysql 字符串 底层_Mysql 的索引底层原理及数据结构详解
- 如何查看kafka每个话题一共分了几个分区_如何决定kafka集群中话题的分区的数量...
- 计算机基础知识教程 百度,28、如何上网--电脑基础知识
- mysql联表查球队比分_mysql – 什么可以导致连接比分为两个查询慢?
- Python基础100题