当前位置: 首页 > news >正文

CF1842G Tenzing and Random Operations题解

CF1842G Tenzing and Random Operations

题目描述

又一道随机问题。

Tenzing 有一个长度为nnn的数组aaa和一个整数vvv

Tenzing 将进行mmm次如下操作:

  1. 每次等概率随机选择一个整数iii,满足1≤i≤n1 \leq i \leq n1in
  2. 对所有满足i≤j≤ni \leq j \leq nijnjjj,将aja_jaj赋值为aj+va_j + vaj+v

Tenzing 想知道,经过mmm次操作后,∏i=1nai\prod_{i=1}^n a_ii=1nai的期望值是多少,结果对109+710^9+7109+7取模。

形式化地,设M=109+7M = 10^9+7M=109+7。可以证明答案可以表示为最简分数pq\frac{p}{q}qp,其中pppqqq是整数且q≢0(modM)q \not\equiv 0 \pmod{M}q0(modM)。请输出等于p⋅q−1 mod Mp \cdot q^{-1} \bmod Mpq1modM的整数。换句话说,输出一个整数xxx,满足0≤x<M0 \le x < M0x<Mx⋅q≡p(modM)x \cdot q \equiv p \pmod{M}xqp(modM)

输入格式

输入的第一行包含三个整数nnnmmmvvv1≤n≤50001\leq n\leq 50001n50001≤m,v≤1091\leq m,v\leq 10^91m,v109)。

第二行包含nnn个整数a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an1≤ai≤1091\leq a_i\leq 10^91ai109)。

输出格式

输出∏i=1nai\prod_{i=1}^n a_ii=1nai的期望值对109+710^9+7109+7取模的结果。

输入输出样例 #1

输入 #1

2 2 5 2 2

输出 #1

84

输入输出样例 #2

输入 #2

5 7 9 9 9 8 2 4

输出 #2

975544726

说明/提示

经过所有mmm次操作后,数组aaa有三种可能的情况:

  1. a1=2,a2=12a_1=2,a_2=12a1=2,a2=12,概率为14\frac{1}{4}41
  2. a1=a2=12a_1=a_2=12a1=a2=12,概率为14\frac{1}{4}41
  3. a1=7,a2=12a_1=7,a_2=12a1=7,a2=12,概率为12\frac{1}{2}21

因此,a1⋅a2a_1\cdot a_2a1a2的期望值为14⋅(24+144)+12⋅84=84\frac{1}{4}\cdot (24+144) + \frac{1}{2}\cdot 84=8441(24+144)+2184=84

由 ChatGPT 4.1 翻译

思路

考虑如何使其时间复杂度和m无关。
发现可以考虑设计一个链,i->i+1有a[i]条路,可以每次给所有的增加v条路径。
发现总共经过的增加的路径最多只有n种,考虑设f[i][j]表示到第i条路总共经过了j种不同的时刻增加的路径集合(指所有增加中其经历了j种增加的路径)
f[i+1][j]+=(f[i][j]a[i+1](原本路径)+f[i][j]jv(之前走过的新路))
f[i+1][j+1]+=(f[i][j]
(m-j)(未被选的路径数)v(增加的路径数)(i+1)(选择其开始地点(最初第一个所在地)))
最终答案为所有f[n][i]*n^(m-i) (其他随便)/n^m(总数)

代码

#include<bits/stdc++.h>usingnamespacestd;constlonglongmod=1e9+7;longlongn,m,v,a[5005],f[5005][5005],op=0;longlongpow2(longlonga1,longlongb1){longlongc1=1;while(b1>=1){if(b1%2==1){c1=c1*a1%mod;}a1=a1*a1%mod;b1/=2;}returnc1;}intmain(){cin>>n>>m>>v;for(inti=1;i<=n;i++){cin>>a[i];}f[0][0]=1;for(inti=0;i<=n-1;i++){for(intj=0;j<=min((longlong)i,m);j++){f[i+1][j]=(f[i+1][j]+f[i][j]*(a[i+1]+(longlong)j*v%mod))%mod;f[i+1][j+1]=(f[i+1][j+1]+f[i][j]*(i+1)*1ll%mod*(m-j)*1ll%mod*v)%mod;}}for(inti=0;i<=min(n,m);i++){op=(op+f[n][i]*pow2(pow2(n,mod-2),i))%mod;}cout<<op<<endl;return0;}//>>AKIOI<<//
http://www.cnnetsun.cn/news/2951130.html

相关文章:

  • NFC技术赋能户外装备数字化转型:从产品连接到生态构建
  • 从汇编到C:嵌入式开发转型实战与CodeWarrior工具链应用
  • 【共创季稿事节】鸿蒙原生ArkTS布局方式之Flex+flexShrink弹性压缩布局
  • 半导体MES系统架构设计与核心模块解析——从零到生产级的完整指南
  • PostgreSQL 技术日报 (6月16日)|Neon 自动化再进一步,逻辑复制冲突日志迎来 v50 更新
  • 一场正在发生的范式转变:Loop Engineering(循环工程)
  • 嵌入式Linux IEEE 1588与PME硬件驱动配置与性能调优实战
  • Claude语义压缩层移除:从可控压缩到原始输入的架构迁移
  • 告别焦虑!非技术背景转行AI产品,你只需懂这个就够了!
  • uView-Plus 3.0:如何用Vue 3跨端UI框架解决多平台开发痛点
  • Hermes Agent + 通义千问3.6本地智能体部署全指南
  • JMeter常数吞吐量定时器五大模式详解与实战选型指南
  • Java毕设选题推荐:基于 SpringBoot 的日常查勤登记与核验系统设计与研究 高校学生查勤信息化管理系统的设计与研究【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 生成式AI爆发三年半,应用层进入残酷筛选期:谁能熬过风暴成赢家?
  • NXP EdgeLock SE051H安全芯片:为Matter智能家居打造硬件级安全与NFC便捷配网
  • ClickHouse企业级版本管理:5步构建零风险升级与回滚框架
  • NS30JM精工直线导轨技术全鉴
  • Gemini 3.1 Pro论文写作7大实测提效技巧
  • 有什么方法能防止文件泄密?分享5个有效防止文件泄密的小技巧,安全高效
  • 从命令行到代码:shapefile工具shp2json与dbf2json的完整使用手册
  • Scaffolding安全最佳实践:保护生成代码中的敏感信息的完整指南
  • 配置centos7基础环境
  • WebRTC AV1视频编码介绍:下一代编码格式在实时通信中的应用
  • OneReward:基于多任务人类偏好学习的统一掩码引导图像生成
  • Logistic Regression实战指南:解决二分类落地中的特征缩放、类别不平衡与概率校准
  • LeetCode 2095. 删除链表的中间节点【链表,快慢指针】中等
  • 数据科学四条职业路径:分析、工程、建模与产品型
  • Java毕业设计-基于 SpringBoot 的宠物之家综合管理系统的设计与实现 面向宠物服务场景的宠物之家管理平台设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • MUSE-Autoskill:让LLM智能体技能自我进化,从静态工具到动态生态
  • 构建个人数字身份标识:从理念到实践的全流程指南