AT_arc154_e 题解

news/2025/4/2 9:48:51/文章来源:https://www.cnblogs.com/Re-Star/p/18802784

题面

更好的阅读体验

题目要求的就是对于每种操作方案得到的排列中,所有逆序对位置之差的和。

首先我们考虑对于一个确定的排列 \(p\),它对答案的贡献如何表示,对于第 \(i\) 位,每有一个 \(j<i\)\(p_j>p_i\) 时会产生 \(i\) 的贡献,同时每有一个 \(j>i\)\(p_j<p_i\) 时会产生 \(-i\) 的贡献,于是我们令第 \(i\) 位贡献为 \(f(i)\),那么 \(f(i)\) 可以表示为:

\[\begin{aligned} f(i)&=i(\sum\limits_{j=1}^i[p_j>p_i]-\sum\limits_{j=i+1}^n[p_j\le p_i])\\ &=i(i-\sum\limits_{j=1}^i[p_j\le p_i]-\sum\limits_{j=i+1}^n[p_j\le p_i])\\ &=i(i-\sum\limits_{j=1}^n[p_j\le p_i])\\ &=i^i-i\times p_i \end{aligned} \]

现在我们考虑如何统计所有方案的权值和,这里我们可以求 \(\sum_{i=1}^ni^2-i\times p_i\) 的期望值,然后再乘上方案数。这里前面的 \(i^2\) 求和是一个定值,因为无论排列如何变化,最终 \(1\)\(n\) 都会占满 \(1\)\(n\) 的位置。所以要求的就是 \(\sum_{i=1}^ni^2-\sum_{i=1}^n iE(p'_i)\)

关键在于求位置的期望值,看起来似乎很困难,但是细想一下,位置 \(i\) 如果被操作区间覆盖了,经过这一次操作到 \(j\) 的方案数应该是多少。

  • 如果 \(j>i\)\(min(i,n-j+1)\) 种方案。
  • 如果 \(j<i\)\(min(j,n-i+1)\) 种方案。
    我们把两种情况合并一下,得到方案数为 \(min(i,j,n-i+1,n-j+1)\)。所以 \(i\) 经过一次操作到 \(n-j+1\) 的方案数是一样的,也就相当于概率是一样的。所以对于任何一个位置,当它被操作区间覆盖时,最终位置的期望值都是\(\frac n2\),而不被覆盖时就会留在原地。现在就很好求了,位置 \(i\) 不被覆盖的概率为 \(1-\frac{2i(n-i+1)}{n(n+1)}\),那么 \(m\) 次操作都不被覆盖的概率就是 \(q=(1-\frac{2i(n-i+1)}{n(n+1)})^m\),则 \(E(p_i)=iq+\frac n2(1-q)\) ,这道题就做完了。

code

代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll fac[100]={1},sum[100],n=16;
inline ll rd()
{char c;ll f=1;while(!isdigit(c=getchar()))if(c=='-')f=-1;ll x=c-'0';while(isdigit(c=getchar()))x=x*10+(c^48);return x*f;
}
inline ll qp(ll x,ll y)
{ll res=1;while(y){if(y&1) (res*=x)%=mod;(x*=x)%=mod,y>>=1;}return res;
}
ll C(ll n,ll m)
{ll s=1;for(int i=1;i<=m;i++) (s*=(n-i+1))%=mod;return s*qp(fac[m],mod-2)%mod;
}
ll ans(ll k)
{if(k<5) return 0;k-=5;n=min(16ll,k/2);for(int j=0;j<=n;j++)sum[j]=C(j+4,4)*C(k-2*j+10,10)%mod;k/=2;ll s=0;for(int j=1;j<=n;j++) (sum[j]+=sum[j-1])%=mod;if(k<=n) return (sum[k]+mod)%mod;for(int i=0;i<=n;i++){ll s1=sum[i],s2=1;for(int j=0;j<=n;j++) if(j!=i)s1=s1*(k-j)%mod,s2=s2*(i-j)%mod;(s+=s1*qp(s2,mod-2)%mod)%=mod;}return (s+mod)%mod;
}
int main()
{for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%mod;for(ll t=rd();t--;) printf("%lld\n",ans(rd()));return 0;
}

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

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

相关文章

20241220廖补林实验二《Python程序设计》实验报告

实验二 计算器设计 (一)实验内容 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。 考核基本语法、判定语句、循环语句、逻辑运算等知识点 (二)实验要求 创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。 我用…

网络基础

一、概念 冲突域设备发送数据会产生冲突的网络范围 集线器的所有接口在同一个冲突域 交换机的每个接口都是一个独立的冲突域寻址IP寻址是寻找目标在某一个范围 MAC寻址是具体寻找某一个设备MTU数据包的最大传输单元 接口收发数据支持的单个包的最大长度 以太网接口默认MTU1500B…

20241309 实验二《Python程序设计》实验报告

20241309 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2413 姓名: 梅良谦 学号:20241309 实验教师:王志强 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容 1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。…

【操作系统】进程管理(二)

一、前言之前已经介绍了操作系统的各个模块,现在来具体深入学习操作系统中的进程管理。 二、进程的基本概念在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另外一个程序执行;在多道程序环境下,则允许多个程序并发执行。也正是程序的并发…

MybatisPlus--持久层接口

IService: Save()boolean save(T entity) //批量插入 boolean saveBatch(Collection<T> entityList) boolean saveBatch(Collection<T> entityList, int vatchSIze)SQL:INSERT INTO user (name, email) VALUES (John Doe, john.doe@example.com)批量SQL:INSERT…

CH58x/CH59x动态修改广播包

前言:在日常使用中我们可能有需要动态修改广播包的情况。从机设备不走连接将一些传感器数据通过广播包显示出来 程序中提供了接口函数进行动态修改不用再先关闭广播再重新开启。/******************************************************************************** @fn …

docker 容器部署nginx+keepalived实现高可用

准备两台机器分别部署nginx和keepalived,事先部署好docker容器环境。主机名 ip地址 部署容器park2-0007 10.9.102.62 nginx+keepalivedpark2-0008 10.9.102.63 nginx+keepalived分别启动两个nginx容器docker run -d \--name my-nginx -p 8005:8005 \-v ./nginxdir/default.c…

GraphRAG介绍

一、RAG原理 用户输入了一个指令Instruct,RAG将其与Document store(向量库)中的预存文本进行匹配,然后将符合条件的筛选文本(Retrieved Documents)与指令Instruct,共同合成为一个增强型的Prompt,并将该增强型Prompt喂给大模型,最终大模型根据此增强型Prompt,生成最终的Re…

清理Docker数据卷volumes

原文链接地址 清理Docker数据卷volumes1.查看磁盘使用 2.查看Docker数据卷及磁盘使用情况 3.Docker 删除无用数据卷今天突然发现跑服务器的磁盘满了。记录下进入服务查看到Docker-Overlay2磁盘空间的清理方法:清理Docker的数据卷volumes Docker在长时间使用的情况下,经常需…

Web开发SpringBoot流程性的学习----回顾补充1

HTML(HyperText Markup Language)**:超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言HTML标签都是预定义好的。例如:使用展示超链接,展示图片,展示视频。 HTML代码直接在浏览器中运…

【我的青春coding物语果然有问题!】第四次上机卡题复盘

最近事多 今天才写出来 实际做的时候变量名犯了很多很唐的错误 这里就不一一说了 我们看一下今天要讲的题目 05:正整数的任意进制转换 将 p 进制 n 转换为 q 进制。p 和 q 的取值范围为[2,36],其中,用到的数码按从小到大依次为:0,1,2,3,4,5,6,7,8,9,A,B,...,Z…

【PCIE711-214】基于PCIe总线架构的4路HD-SDI/3G-SDI视频图像模拟源

产品概述 PCIE711-214是一款基于PCIE总线架构的4路SDI视频模拟源。该板卡为标准的PCIE插卡,全高尺寸,适合与PCIE总线的工控机或者服务器,板载协议处理器,可以通过PCIE总线将上位机的YUV 422格式视频数据下发通过SDI接口播放出去,从而模拟SDI协议标准的视频流。该板卡支持4…