当前位置: 首页 > news >正文

洛谷题解 | UVA1485 Permutation Counting

目录

    • 题目描述
    • 题目思路
    • AC 代码

题目描述

https://onlinejudge.org/external/14/p1485.pdf

题目思路

dp。

定义 dpi,jdp_{i,j}dpi,j 为前 iii 个数的排列中恰好有 jjj 个小于号的排列总数。

考虑将数字 iii 插入到前 i−1i-1i1 个数的排列中不同的位置:

  • 如果插入到最前面,会增加一个大于号。
  • 如果插入到最后面,会增加一个小于号。
  • 如果插入到已有的小于号中间,原来的小于号会被破坏,变成一个大于号和一个小于号,所以会增加一个大于号和一个小于号,即小于号数目不变。
  • 如果插入到已有的大于号中间,原来的大于号会被破坏,变成一个小于号和一个大于号,即增加一个小于号。

综上,得出状态转移方程
dpi,j=dpi−1,j×(j+1)+dpi−1,j−1×(i−j)dp_{i,j} = dp_{i-1,j} \times (j + 1) + dp_{i-1,j-1} \times (i - j)dpi,j=dpi1,j×(j+1)+dpi1,j1×(ij)

处理一下边界条件:因为只有一个数字时没有符号,所以 dp1,0=1dp_{1,0} = 1dp1,0=1

AC 代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
ll n,k,dp[1010][1010];
int main(){dp[1][0] = 1;for(int i = 2;i <= 1000;i++){for(int j = 0;j < 1000;j++){dp[i][j] = (dp[i - 1][j] * (j + 1) + dp[i - 1][j - 1] * (i - j)) % mod;}}while(cin >> n >> k) cout << dp[n][k] << endl;return 0;
} 

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,如果喜欢我的文章,给个关注吧!

冰焰狼 | 文

如果本篇博客有任何错误,请批评指教,不胜感激 !

http://www.dtcms.com/a/275796.html

相关文章:

  • jenkins自动化部署前端vue+docker项目
  • 前端面试宝典---项目难点2-智能问答对话框采用虚拟列表动态渲染可视区域元素(10万+条数据)
  • 自动化运维工具jenkins问题
  • Ubuntu安装Jenkins
  • java堆的创建与基础代码解析(图文)
  • Classifier guidance与Classifier-free guidance的原理和公式推导
  • 深大计算机游戏开发实验三
  • 深度学习图像分类数据集—害虫识别分类
  • 分布式数据库系统模式结构深度解析
  • Nginx 中的负载均衡策略
  • 数据统计及透视表
  • 使用Java完成下面项目
  • 引入了模块但没有使用”,会不会被打包进去
  • 【科研绘图系列】R语言绘制小提琴图
  • 基于定制开发开源AI智能名片S2B2C商城小程序的社群游戏定制策略研究
  • cuDNN 的 IMPLICIT_GEMM 算法
  • 【数据结构初阶】--顺序表(二)
  • 浅谈 Pydantic v2 的 RootModel 与联合类型——构建多请求结构的统一入口模型
  • 钉钉企业应用开发实战:从零构建组织级业务工具
  • 【LeetCode453.最小操作次数使数组元素相等】
  • leetcode-链表排序
  • Matlab中optimoptions的用法
  • docker 443错误 lookup docker.mirrors.ustc.edu.cn: no such host
  • Hap包引用的Hsp报签名错误怎么解决
  • ABSD(基于架构的软件开发)深度解析:架构驱动的工程范式
  • 初学者关于算法复杂度的学习笔记
  • goframe框架中获取url内容并转成Base64字符串
  • 【QGC】深入解析 QGC 配置管理
  • AAAI-2025 | 西交模拟人类空间推理策略的具身导航!REGNav:房间专家引导的图像目标导航
  • Linux文件的权限