[ARC154E] Reverse and Inversion

神仙题!(原题链接)

对于这样的题,先不要绕到具体操作里出不来。我们先把复杂的式子进行变形。

对于题中式子,先不考虑翻转,设 p p p 为给定排列。则:
f ( p ) = ∑ i < j [ p i > p j ] ( j − i ) = ∑ 1 ≤ i < j ≤ n , p i > p j ( j − i ) = ∑ 1 ≤ i < j ≤ n , p i > p j j − ∑ 1 ≤ i < j ≤ n , p i > p j i \begin{aligned} f(p)&=\sum_{i<j}[p_i>p_j](j-i) \\ &=\sum_{1\le i<j\le n,p_i>p_j}(j-i) \\ &=\sum_{1\le i<j\le n,p_i>p_j}j_{}-_{}\sum_{1\le i<j\le n,p_i>p_j}i \end{aligned} f(p)=i<j[pi>pj](ji)=1i<jn,pi>pj(ji)=1i<jn,pi>pjj1i<jn,pi>pji

此时式子依然很复杂,考虑拆解 i i i 的贡献。则:
f ( p ) = ∑ i = 1 n i ∑ j = 1 i [ p i < p j ] − ∑ i = 1 n i ∑ j = i + 1 n [ p i > p j ] = ∑ i = 1 n ( ∑ j = 1 i [ p i < p j ] − ∑ j = i + 1 n [ p i > p j ] ) \begin{aligned} f(p)&=\sum_{i=1}^{n}i\sum_{j=1}^{i}[p_i<p_j]-\sum_{i=1}^{n}i\sum_{j=i+1}^{n}[p_i>p_j] \\ &=\sum_{i=1}^{n}\left ( \sum_{j=1}^{i}[p_i<p_j]-\sum_{j=i+1}^{n}[p_i>p_j] \right ) \end{aligned} f(p)=i=1nij=1i[pi<pj]i=1nij=i+1n[pi>pj]=i=1n(j=1i[pi<pj]j=i+1n[pi>pj])

此时再考虑括号内的式子还能怎么简化。注意到 [ 1 , i ] [1,i] [1,i] 中大于 p i p_i pi 的数,实际上就是 i i i 减去区间内小于 p i p_i pi 的数。故:
f ( p ) = ∑ i = 1 n i ( i − ∑ j = 1 i [ p i ≥ p j ] − ∑ j = i + 1 n [ p i ≥ p j ] ) = ∑ i = 1 n i ( i − ∑ j = 1 n [ p i ≥ p j ] ) \begin{aligned} f(p)&=\sum_{i=1}^{n}i\left (i- \sum_{j=1}^{i}[p_i\ge p_j]-\sum_{j=i+1}^{n}[p_i\ge p_j] \right ) \\&=\sum_{i=1}^{n}i\left ( i-\sum_{j=1}^{n}[p_i\ge p_j] \right ) \end{aligned} f(p)=i=1ni(ij=1i[pipj]j=i+1n[pipj])=i=1ni(ij=1n[pipj])

给定我们的是一个排列,那这 ∑ j = 1 n [ p i ≥ p j ] \begin{aligned} \sum_{j=1}^{n}[p_i\ge p_j] \end{aligned} j=1n[pipj] 实际上就是 i i i 的排名,那不就是 p i p_i pi了!

所以 f ( p ) = ∑ i = 1 n i ( i − p i ) \begin{aligned} f(p)&=\sum_{i=1}^{n}i\left ( i-p_i \right ) \end{aligned} f(p)=i=1ni(ipi)

于是式子变的可求,此时再考虑区间翻转。 i i i 在每一次翻转后的具体位置是不可直接计算的,所以我们只需要算出 i i i m m m 次操作后到达位置的期望 E ( i ) E(i) E(i) 即可求的最终答案,即:
( C n + 1 2 ) m ∑ i = 1 n i 2 − p i × E ( i ) \begin{aligned} (C_{n+1}^{2})^m \sum_{i=1}^{n}i^2-p_i\times E(i) \end{aligned} (Cn+12)mi=1ni2pi×E(i)

思考翻转的本质,设 i i i 被翻转并最终翻转到 j j j,那么翻转的中心显然是 i + j 2 \frac{i+j}{2} 2i+j
i > j i>j i>j,则翻转的方案数为 ( j , n − i + 1 ) (j,n-i+1) (j,ni+1)
i < j i<j i<j,则翻转的方案数为 ( i , n − j + 1 ) (i,n-j+1) (i,nj+1)
试着把两种情况合并,发现最终方案数为 m i n ( i , n − i + 1 , j , n − j + 1 ) min(i,n-i+1,j,n-j+1) min(i,ni+1,j,nj+1)
由此我们注意到从 i i i 翻转到 j j j,和从 i i i 翻转到 n − j + 1 n-j+1 nj+1 的概率是相等的。所有位置总贡献就是 j + n − j + 1 2 = n + 1 2 \frac{j+n-j+1}{2}=\frac{n+1}{2} 2j+nj+1=2n+1,最终期望为一个定值。

再考虑 i i i 在所有操作中都没被翻转的情况,它最终期望位置为 i i i,而都不被包含的概率又如何算?考虑一次操作中不被包含,则概率 q = 1 − i × ( n − i + 1 ) C n + 1 2 q=1-\frac{i\times (n-i+1)}{C_{n+1}^{2}} q=1Cn+12i×(ni+1)。它的含义是剔除掉所有区间翻转方案中翻转到 i i i 的概率。

所以最终 E ( i ) = q × i + ( 1 − q ) × n + 1 2 E(i)=q\times i+(1-q)\times \frac{n+1}{2} E(i)=q×i+(1q)×2n+1。再将其代入上式即可得到答案,代码并不长,注意取模即可。

至此,我们终于解决此题。总结这道题对我们的启发:

①:对于一些有形如 [ p i > p j ] [p_i>p_j] [pi>pj] 等类似逆序对,顺序对的信息,我们考虑用上述方法简化此条件。一开始不是想如何求,而是想如何可求。

②:一些让我们计算最终位置的题型中,从对称等概率的关系去考虑,可能会挖掘出意想不到的性质。

简单贴一下代码。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10,mod=998244353;
int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,p[N],s[N];
int qpow(int a,int b){int res=1;a%=mod;while(b){if(b&1)res=res*a%mod;a=a*a%mod,b>>=1;}return res;
}
signed main(){n=read(),m=read();int power=0,ep=(n+1)*qpow(2,mod-2)%mod;for(int i=1;i<=n;i++) p[i]=read(),(power+=i*i%mod)%=mod;for(int i=1;i<=n;i++){int tmp=((1-2*i*(n-i+1)%mod*qpow(n*(n+1),mod-2))+mod)%mod;int q=qpow(tmp,m);s[i]=(q*i%mod+((1-q+mod)%mod)*ep%mod)%mod;}int res=0,C=n*ep%mod;for(int i=1;i<=n;i++) (res+=s[i]*p[i]%mod)%=mod;int ans=(power-res+mod)%mod*qpow(C,m)%mod;cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest框架之fixture测试夹具详解

前言 大家下午好呀&#xff0c;今天呢来和大家唠唠pytest中的fixtures夹具的详解&#xff0c;废话就不多说了咱们直接进入主题哈。 一、fixture的优势 ​ pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown&#xff0c;但相对之下它的功能更加强大和灵活。 …

宠物空气净化器该怎么选?希喂,小米、安德迈这三款好用吗?

不得不说&#xff0c;虽然现在购物网站的活动不少&#xff0c;可力度都好弱啊&#xff01;我想买宠物空气净化器很久了&#xff0c;觉得有点贵&#xff0c;一直没舍得入手。价格一直没变化&#xff0c;平台小活动根本没什么优惠&#xff0c;只能寄希望于双十一了&#xff0c;准…

【docker】要将容器中的 livox_to_pointcloud2 文件夹复制到宿主机上

复制文件夹 使用 docker cp 命令从容器复制文件夹到宿主机&#xff1a; docker cp <container_id_or_name>:/ws_livox/src/livox_to_pointcloud2 /path/to/host/folder sudo docker cp dandong_orin_docker:/ws_livox/src/livox_to_pointcloud2 /home

WPS的JS宏实现删除某级标题下的所有内容

想要删除Word文档中&#xff0c;包含特定描述的标题下所有内容&#xff08;包含各级子标题以及正文描述&#xff09;。 例如下图中&#xff0c;想删除1.2.1.19.1业务场景下所有内容&#xff1a; 简单版&#xff1a; 删除光标停留位置的大纲级别下所有的内容。实现的JS代码如下…

【YOLO学习】YOLOv2详解

文章目录 1. 概述2. Better2.1 Batch Normalization&#xff08;批归一化&#xff09;2.2 High Resolution Classifier&#xff08;高分辨率分类器&#xff09;2.3 Convolutional With Anchor Boxes&#xff08;带有Anchor Boxes的卷积&#xff09;2.4 Dimension Clusters&…

光伏开发:一充一放和两充两放是什么意思?

一充一放 一充一放是指储能设备在一次充电过程中充满电&#xff0c;并在一次放电过程中将电能全部释放。这种模式的原理相对简单&#xff0c;充电时电能转化为化学能或其他形式的能量储存&#xff0c;放电时则将这些能量转化回电能供应给负载。一充一放模式适用于对储能设备充…

2024年9月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年9月国产数据库大事件和重要产品发布消息。 目录 2024年9月国产数据库大事记 TOP102024年9月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布兼容认证代表厂商大事记厂商活动相关资料 2024年9月国产数据库大事记 TOP10 2024年9月国…

51单片机的无线通信智能车库门【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块红外传感器光照传感器时钟模块步进电机蓝牙按键、LED、蜂鸣器等模块构成。适用于智能车库自动门、无线控制车库门等相似项目。 可实现功能: 1、LCD1602实时显示北京时间和自动/手动模式&#xff0c;以及验证是否成…

揭秘HCIE证书:职场神话or锦上添花?深度剖析!

HCIE&#xff1a;职场赛道上的加速器 在职场这条充满挑战与机遇的赛道上&#xff0c;每个人都渴望找到那个能让自己加速前行的助推器。 HCIE证书&#xff0c;作为IT领域的顶级认证&#xff0c;无疑成为了许多人心目中的理想选择。它不仅是华为对网络专家专业能力的认可&#…

Biomamba求职| 国奖+4篇一作SCI

转眼间我也要参加秋招啦&#xff0c;认真的求职帖&#xff0c;各位老师/老板欢迎联系~其它需要求职的小伙伴也欢迎把简历发给我们&#xff0c;大家一起找工作。 一、基本信息 姓名&#xff1a;Biomamba 性别&#xff1a;男 出厂年份&#xff1a;1998 籍贯&#xff1a;浙江…

App测试时常用的adb命令

adb 全称为 Android Debug Bridge&#xff08;Android 调试桥&#xff09;&#xff0c;是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具&#xff0c;可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作&#xff0…

如何构建某一行业的知识图谱

构建一个行业的知识图谱是一个系统而复杂的过程&#xff0c;它涉及到数据收集、处理、分析等多个环节。以下是构建行业知识图谱的基本步骤&#xff1a; 1. 需求分析&#xff1a; - 明确构建知识图谱的目的和应用场景&#xff0c;比如是用于辅助决策、市场分析、产品推荐等。…

k8s网络通信

k8s通信整体架构 k8s通过CNI接口接入其他插件来实现网络通讯。目前比较流行的插件有flannel&#xff0c;calico等 CNI插件存放位置&#xff1a;# cat /etc/cni/net.d/10-flannel.conflist 插件使用的解决方案如下 虚拟网桥&#xff0c;虚拟网卡&#xff0c;多个容器共用一个虚…

模拟实现消息队列(基于SpringBoot实现)

项目代码 提要&#xff1a;此处的消息队列是仿照RabbitMQ实现&#xff08;参数之类的&#xff09;&#xff0c;实现一些基本的操作&#xff1a;创建/销毁交互机&#xff08;exchangeDeclare&#xff0c;exchangeDelete&#xff09;&#xff0c;队列&#xff08;queueDeclare&a…

<Rust>iced库(0.13.1)学习之部件(三十二):使用markdown部件来编辑md文档

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 注:新版本已更新为0.13 概述 这是本专栏的第三十二篇,主要介绍一…

zabbix7.0配置中文界面

Zabbix 是一个广泛使用的开源监控解决方案&#xff0c;支持多种语言界面。本文将详细介绍如何配置 Zabbix 以使用中文界面&#xff0c;从而提高用户体验和可读性。 1. 环境准备 在开始配置之前&#xff0c;请确保你已经安装并运行了 Zabbix 服务器、前端和数据库。如果你还没有…

WPF|依赖属性SetCurrentValue方法不会使绑定失效, SetValue方法会使绑定失效?是真的吗?

引言 最近因为一个触发器设置的结果总是不起效果的原因&#xff0c;进一步去了解[依赖属性的优先级](Dependency property value precedence - WPF .NET | Microsoft Learn)。在学习这个的过程中发现对SetCurrentValue一直以来的谬误。 在WPF中依赖属性Dependency property的…

从0到1:小区业主决策投票小程序开发笔记

可研 小区业主决策投票小程序&#xff1a; 便于业主参与社区事务的决策&#xff0c;通过网络投票的形式&#xff0c;大大节省了业委会和业主时间&#xff0c;也提高了投票率。其主要功能&#xff1a;通过身份证、业主证或其他方式确认用户身份&#xff1b;小区管理人员或业委会…

Java 17流程控制语句3w字解读

本笔记来自尚硅谷教育-康师傅&#xff0c;学习教程&#xff1a;https://www.bilibili.com/video/BV1PY411e7J6/?spm_id_from333.337.search-card.all.click 本章专题与脉络 第1阶段&#xff1a;Java基本语法-第03章 流程控制语句是用来控制程序中各语句执行顺序的语句&#xf…

5个免费ppt模板网站推荐!轻松搞定职场ppt制作!

每次过完小长假&#xff0c;可以明显地感觉到&#xff0c;2024这一年很快又要结束了&#xff0c;不知此刻的你有何感想呢&#xff1f;是满载而归&#xff0c;还是准备着手制作年终总结ppt或年度汇报ppt呢&#xff1f; 每当说到制作ppt&#xff0c;很多人的第一反应&#xff0c…