蓝桥杯十三届真题—全排列价值

这篇具有很好参考价值的文章主要介绍了蓝桥杯十三届真题—全排列价值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

对于一个排列 A = (a1, a2, · · · , an),定义价值 C i = ∣ a j ∣ j < i , a j < a i ∣ C_i = |{a_j | j < i, a_j < a_i}| Ci=ajj<i,aj<ai。定义 A 的价值为 ∑ i = 1 n C i \sum_{i=1}^nC_i i=1nCi

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

输入

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

输出

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

样例输入

3

样例输出

9

思路

该题目明显要用动态规划进行求解,考虑状态转移方程,设dp[i]表示1至n的全排列中所有排列价值之和,可以发现如下规律:文章来源地址https://www.toymoban.com/news/detail-411907.html

  • 考虑全排列生成规律,假设已有1到n-1的全排列,将n插入到某个排列(有n个插入位置)则形成1至n的全排列。
  • 考虑如何从dp[n-1]生成dp[n],可以将1至n的价值分为两部分:n插入前序列的价值+插入n产生的价值
    n插入前的价值:每个序列经过插入可构成n个新序列,比如12,将3插入获得312,132,123。故该部分为: d p [ n − 1 ] ∗ n dp[n-1]*n dp[n1]n
    插入n产生的价值:插入到末尾产生价值为n-1,插入第一个产生价值为0,每个位置对应(n-1)!个序列,则产生价值为 ( n − 1 ) ! ∗ ( 0 + 1 + 2 + ⋯ + n − 1 ) = n ! ( n − 1 ) / 2 (n-1)!*(0+1+2+\cdots +n-1)=n!(n-1)/2 (n1)!(0+1+2++n1)=n!(n1)/2
    则状态转移方程应为: d p [ n ] = d p [ n − 1 ] ∗ n + n ! ( n − 1 ) / 2 dp[n]=dp[n-1]*n+n!(n-1)/2 dp[n]=dp[n1]n+n!(n1)/2
    考虑到解可能很大,边计算边求余,并且用动态规划求阶乘,f[i]表示i!对MOD求余的值,如下所示:
    f [ i ] = i ∗ f [ i − 1 ] % M O D d p [ n ] = ( d p [ n − 1 ] ∗ n + f [ n ] ∗ ( n − 1 ) / 2 ) % M O D f[i]=i*f[i-1]\%MOD\\dp[n]=(dp[n-1]*n+f[n]*(n-1)/2)\%MOD f[i]=if[i1]%MODdp[n]=(dp[n1]n+f[n](n1)/2)%MOD
    只涉及相邻状态的转换,用一个变量表示即可。
代码
MOD = 998244353
n = int(input().strip())
dp = 0
f = 1
for i in range(2,n+1):
    dp = (dp*i+f*i*(i-1)//2)%MOD
    f = f*i%MOD
print(dp)

到了这里,关于蓝桥杯十三届真题—全排列价值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯选拔赛真题30】C++字母转换 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

    目录 C/C++字母转换 一、题目要求 1、编程实现 2、输入输出

    2024年01月16日
    浏览(44)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(78)
  • 第十三届蓝桥杯嵌入式国赛真题(基于HAL库的巨简代码+超级详解)

    相关说明: 开发板:CT117E-M4(STM32G431RBT6) 开发环境: CubeMX+Keil5 涉及题目:第十三届蓝桥杯嵌入式国赛真题 难点:双路AD测量电压、输入捕获测频率、LCD屏幕翻转、冒泡法、初始上电判断、按键长短按 CubeMX配置、主要函数代码及说明: 1.使能外部高速时钟: 2.配置时钟树:

    2023年04月09日
    浏览(73)
  • 第十三届蓝桥杯嵌入式省赛第二场真题(基于HAL库的巨简代码+超级详解)

    相关说明: 开发板:CT117E-M4(STM32G431RBT6) 开发环境: CubeMX+Keil5 涉及题目:第十三届蓝桥杯嵌入式省赛第二场真题 CubeMX配置、主要函数代码及说明: 1.使能外部高速时钟: 2.配置时钟树: 3.GPIO: 4.TIM2(通道2 PA1输出脉冲信号): 5.UART: 6.NVIC优先级配置    博主参加的是第一场

    2023年04月09日
    浏览(65)
  • 第十三届蓝桥杯经验分享

    当时报名参加蓝桥杯,是为了以后工作能有个证吧,但苦于大三 没有时间准备 ,就这样轻装上阵, 一点儿没复习 , 真题也没做,练习也没整 , 一篇经验贴也没仔细看 ,结果还拿了个省三,不知道是不是参与奖哈哈。但作为过来人,还是有点经验的,特来分享 ヽ(✿゚▽゚

    2024年02月15日
    浏览(57)
  • 十三届蓝桥杯国赛2022

    分苹果,不同之处在于一个盘子可以放0个苹果 直接贪心思想 过了90%,这种贪心其实无法保证全局最优 哪个局部没有最优呢? if(x=by=a) 这里,是选则用 A 还是用 B 我的选取规则是 尽量保留 AB 的总次数尤其是 A ,我想的是在 AB 都无法到达 9 的时候,只能用上A。但是,B也很珍

    2024年02月07日
    浏览(51)
  • 【蓝桥杯】质数问题、灌溉、最大数字、全排列的价值

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自己!

    2023年04月08日
    浏览(35)
  • 第十三届蓝桥杯省赛Python 组

    本次所有代码均存放于仓库: Github :GxlHus/Algorithm at 蓝桥杯 (github.com) Gitee :Algorithm: 算法解题 - Gitee.com 原题目:第十三届蓝桥杯大赛软件赛省赛_PB.pdf · AYO/Algorithm - Gitee.com 本次省赛题目总体来说不难,总体质量比较高,尤其是后边几道题,虽然能轻易做出来,但是想跑通所

    2023年04月17日
    浏览(47)
  • 6 -【第十三届】蓝桥杯物联网试题 (省赛题)

    1.将时钟树频率设置成32MHz 2.将GPIO引脚做如下配置: 引脚功能 使能中断 打开串口通信2 3.生成工程代码 4.移植OLED、LoRa库文件 5.编写逻辑代码 Task_Main.h Task_Main.c stm32l0xx_it.c main.c 1.将时钟树频率设置成32MHz 2.将GPIO引脚做如下配置: 引脚功能 使能中断 3.生成工程代码 4.移植LoRa、

    2023年04月08日
    浏览(72)
  • 【十三届蓝桥杯省赛解析javaC组】

    题目描述 解题思路 A题相对比较简单,这题有两种解法 第一种是可以利用记事本把文本复制,然后自己手动排序 第二种是写代码:具体思路是定义一个字符串用来储存问文本,然后把文本转成字符型数组,利用Arrays.sort对字符型数组进行排序,最终实现字符的排序 代码示例

    2023年04月20日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包