当前位置: 首页 > 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.lryc.cn/news/586600.html

相关文章:

  • C++结构体数组应用
  • Spring Boot 中使用 Lombok 进行依赖注入的示例
  • 基于springboot+Vue的二手物品交易的设计与实现(免费分享)
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
  • jieba 库:中文分词的利器
  • JAVA--双亲委派机制
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(四)
  • 【一起来学AI大模型】RAG系统流程:查询→向量化→检索→生成
  • 【AI News | 20250711】每日AI进展
  • 【TOOL】ubuntu升级cmake版本
  • AI产品经理面试宝典第12天:AI产品经理的思维与转型路径面试题与答法
  • 功耗校准数据PowerProfile测试方法建议
  • 【深度剖析】致力“四个最”的君乐宝数字化转型(下篇:转型成效5-打造数字化生存能力探索可持续发展路径)
  • VUE3 el-table 主子表 显示
  • Transformer基础
  • Openpyxl:Python操作Excel的利器
  • Qt 多线程编程:单例任务队列的设计与实现
  • 五、深度学习——CNN
  • NW728NW733美光固态闪存NW745NW746
  • C语言32个关键字
  • 锁相环初探
  • Python Day11
  • 《Spring 中上下文传递的那些事儿》Part 11:上下文传递最佳实践总结与架构演进方向
  • LeetCode题解---<485.最大连续1的个数>
  • [Token]Token merging for Vision Generation
  • 【嘉立创】四层板设计
  • 当大模型遇见毫米波:用Wi-Fi信号做“透视”的室内语义SLAM实践——从CSI到神经辐射场的端到端开源方案
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文分享
  • UnityShader——SSAO
  • Matplotlib 模块入门