全排列的价值 python实现 蓝桥杯 2137

2023-11-05

问题描述

对于一个排列 A=(a1​,a2​,⋯,an​), 定义价值 ci​ 为 a1​ 至 ai−1​ 中小于 ai​ 的数 的个数, 即  ci​=∣{aj​∣j<i,aj​<ai​}∣。 ​

定义 A 的价值为 ∑i=1n​ci​ 。

给定 n, 求 1 至 n 的全排列中所有排列的价值之和。

输入格式

输入一行包含一个整数 n 。

输出格式

输出一行包含一个整数表示答案, 由于所有排列的价值之和可能很大, 请 输出这个数除以 998244353 的余数。

样例输入 1

3

样例输出 1

9

样例输入 2

2022

样例输出 2

593300958

 思路:这是一道动态规划问题,需要找到每一个排列之间的关系

2 的全排列(1,2)(2,1)

3的全排列(1,2,3)(1,3,2)(2,1,3)(2,3,1)(3,1,2)(3,2,1)

如果3在第一位,那么对价值c没有影响,还是2的价值

3在第二位,价值+1+1,也就是原来2的价值加上2全排列的总数

3在第三位,价值+2+2,原来2的价值加上2全排列的总数*2

所以我们能得到:

dp[i]=dp[i-1]*3+(0+1+...+i-1)*(n-1的全排列数)

mod = 998244353
n = int(input())
ans =2 
dp = [0]*(n+3)
dp[1]=0
dp[2]=1
for i in range(3,n+1):
  dp[i]=(dp[i-1]*i +ans*i*(i-1)//2)%mod
  ans = (ans*i)%mod # 计算全排列数
print(dp[n]%mod) 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全排列的价值 python实现 蓝桥杯 2137 的相关文章

随机推荐

  • 简洁而实用的NAS导航页——Homarr

    前言 为了更好管理家庭内网中部署的各个服务 尤其访问NAS docker中的容器 之前看过一些类似的导航面板 其中这个界面看上去十分简洁 这里自己就记录和分享一下搭建过程 官方网站 Home Homarr Docs 个人环境 支持docke
  • violin plot 小提琴图 matlab R语言 Python

    最近用到violin图 在此总结制作此图的步骤 matlab 需先下载函数文件 https ww2 mathworks cn matlabcentral fileexchange 45134 violin plot 函数中有默认添加 中位数
  • GDB调试详解

    文章目录 调试信息 启动调试 调试进程 调试core文件 GDB调试命令 run continue break backtrace 与 frame info break enable disable delete list print pt
  • 基于深度学习的人脸表情识别开发

    目前深度学习很流行 很大程度减轻了图像开发的难度 表情识别是图像算法的重要研究方向 本文提供一种基于深度学习的表情识别方法 1 获取模型 深度学习的框架比较多 有TF CAFFE PYTORCH KERAS等 然后有很多网络比如resnet
  • 2022年度【产业数字化金铲奖】重磅来袭!

    出品 产业家 第二届金铲奖来了 过去的一年时间里 产业家清晰地看到 数实融合的潮水更加汹涌澎湃且势不可挡 越来越多的企业开始寻求数字化转型 它们来自金融 工业 农业 医疗 能源等等 产业数字化 已经成为当代中国的主旋律 在新的主旋律中 被看
  • OpenWrt之时区设置(夏令时设置)

    今天遇到一个客户关于设置时区问题 涉及到夏令时区 查阅一些资料终于搞明白了 记录如下 因为openwrt是基于linux内核 所以记录一下Linux的时间和时区设置 Linux的时间和时区设置 在linux中与时间相关的文件有 etc lo
  • 如何使用eclipse软件创建一个Java项目?

    同学们在参加Java的时候老师肯定会教给你们如何去创建一个项目 这里怕有些同学没记住 所以单独为大家分享一篇如何使用eclipse软件创建一个Java项目教程 感觉有用的话收藏转发一下 eclipse创建Java项目教程 1 首先我们需要打
  • 将一个Android项目作为另一个Android Library给其他项目使用

    一 eclipse中的使用 开发中如果使用eclipse将一个Android工程作为Android Library给其他项目使用 需要实现的步骤如下 1 将android工程设为库 选择工程右击选择 property gt Android
  • Flutter Plugin调用Native APIs

    关键词 Flutter Flutter Plugin Platform Channel Method Channel Flutter Package Flutter插件 Flutter是Google使用Dart语言开发的一套移动应用开发框架
  • 微信小程序 之 发布流程

    1 前期准备 先想好你的小程序是用来做什么的 是电商 服务预约 知识付费 产品展示 还是团队管理 酒店预订 主要面向的人群都是哪些 现在小程序类型繁多 你一定要对自己有清晰的定位 明确的目标 才能避免把小程序做得乱七八糟 让自己的小程序真正
  • 菜鸟操作:QString和QMap转化(QMap嵌套QMap)

    学习QT的时候遇到一个问题 我想要将QMap转成QString 用于socket通信 查了网上找不到我想到的效果 然后就用一个比较粗糙的做法来实现 以下代码是对于二级QMap操作的 主要思路 将QMap中的数据全都放到QString中 包括
  • 百度人脸识别模块使用分享

    本文出自APICloud官方论坛 感谢鲍永道的分享 首先介绍下百度人脸识别模块 baiduFaceRec baiduFaceRec模块封装了百度AI人脸识别功能 使用此模块可实现百度人脸检测 包括age beauty expression
  • DHT11解析

    一 DHT11工作原理 1 获取数据 DHT11包括一个电阻式感湿元件和一个NTC测温元件 这两个获取温湿度数据的方式都差不多 利用湿 温 敏元件的电气特性 如电阻值 随湿 温 度的变化而变化的原理进行湿 温 度测量 2 数据发送 数据格式
  • SPECjvm 2008 小记

    背景 specjvm2008是免费的 直接官网下载就可以开跑了 但俗话说的好 便宜无好货 没啥厂家买账 看官网列出的成绩公示结果 根本没几家上传成绩 另外 SPECjvm2008本身是测试JRE的执行成绩 也就是java客户端的运行成绩 但
  • IOC的两种容器对比

    Spring的IOC容器是一个提供IOC支持的轻量级容器 Spring提供了两种容器类型 BeanFactory和ApplicationContext BeanFactory 基础类型IOC容器 提供完整的IOC支持 默认采用延迟初始化策略
  • 让Python在退出时强制运行一段代码

    atexit介绍 python atexit 模块定义了一个 register 函数 用于在 python 解释器中注册一个退出函数 这个函数在解释器正常终止时自动执行 一般用来做一些资源清理的操作 atexit 按注册的相反顺序执行这些函
  • qwt之鼠标移动和滚轮滚动

    一 qwt中的鼠标左键平移 主要通过 QwtPlotPanner panner new QwtPlotPanner ui gt qwtPlot gt canvas 这种状态下默认的是鼠标拖动图形 x轴和y轴都可以进行移动 以下实现禁止x轴拖
  • MongoDB快速入门

    一 MongoDB安装配置 1 MongoDB简介 MongoDB 由 databases 组成 databases 由 collections 组成 collections 由documents 相当于行 组成 而documents有fi
  • matlab怎么导出矩阵,如何用matlab 生成矩阵

    随便敲了些和lz类似的关系数字 把你的数字放到这个txt文件里就可以了 比如你有一个txt文件叫numbers txt 里头的数字如下 2 3 1 3 4 1 3 9 1 10 9 1 4 6 1 9 6 1 8 10 1 程序如下 cle
  • 全排列的价值 python实现 蓝桥杯 2137

    问题描述 对于一个排列 A a1 a2 an 定义价值 ci 为 a1 至 ai 1 中小于 ai 的数 的个数 即 ci aj j