CF1265E Beautiful Mirrors
CF1265E Beautiful Mirrors
洛谷CF1265E Beautiful Mirrors
题目大意
Creatnx \text{Creatnx} Creatnx有 n n n面魔镜,每天她会问一面镜子:“我漂亮吗?”,第 i i i面魔镜有 p i 100 \dfrac{p_i}{100} 100pi的概率告诉 Creatnx \text{Creatnx} Creatnx她漂亮。
Creatnx \text{Creatnx} Creatnx从第 1 1 1面镜子开始,每天询问一面镜子。对于第 i i i面镜子,将会发生两种情况:
- 如果这面镜子告诉 Creatnx \text{Creatnx} Creatnx她很漂亮:
- 如果这是第 n n n面镜子,那么 Creatnx \text{Creatnx} Creatnx将会很开心并停止询问
- 否则, Creatnx \text{Creatnx} Creatnx将在第二天询问第 i + 1 i+1 i+1面镜子
- 否则, Creatnx \text{Creatnx} Creatnx将会十分伤心,第二天重新从第 1 1 1面镜子开始询问
求 Creatnx \text{Creatnx} Creatnx停止询问的期望天数对 998244353 998244353 998244353取模后的值。
1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ p i ≤ 100 1\leq n\leq 2\times 10^5,1\leq p_i\leq 100 1≤n≤2×105,1≤pi≤100
题解
令 P i = p i 100 P_i=\dfrac{p_i}{100} Pi=100pi。
设 f i f_i fi表示从第 i i i面镜子开始直到停止询问的期望天数,则转移式如下:
f i = P i × f i + 1 + ( 1 − P i ) × f 1 + 1 f_i=P_i\times f_{i+1}+(1-P_i)\times f_1+1 fi=Pi×fi+1+(1−Pi)×f1+1
也就是说,当前有 P i P_i Pi的可能走到第 i + 1 i+1 i+1面镜子,有 1 − P i 1-P_i 1−Pi的可能走到第 1 1 1面镜子。因为从当前的镜子走到另一面镜子需要花费一天的时间,所以要加 1 1 1。
f n + 1 = 1 f_{n+1}=1 fn+1=1,我们要求的是 f 1 f_1 f1。
但是,每个式子中都有 f 1 f_1 f1,所以我们考虑推式子。
先看 f 1 f_1 f1。
f 1 = P 1 f 2 + ( 1 − P 1 ) f 1 + 1 P 1 f 1 = P 1 f 2 + 1 f 1 = f 2 + 1 P 1 f 2 = f 1 − 1 P 1 f_1=P_1f_2+(1-P_1)f_1+1 \\ \qquad \\ P_1f_1=P_1f_2+1 \\ \qquad \\ f_1=f_2+\dfrac{1}{P_1} \\ \qquad \\ f_2=f_1-\dfrac{1}{P_1} f1=P1f2+(1−P1)f1+1P1f1=P1f2+1f1=f2+P11f2=f1−P11
再看 f 2 f_2 f2。
f 2 = P 2 f 3 + ( 1 − P 2 ) f 1 + 1 f 1 − 1 P 1 = P 2 f 3 + ( 1 − P 2 ) f 1 + 1 P 2 f 1 = P 2 f 3 + 1 P 1 + 1 f 1 = f 3 + 1 P 1 P 2 + 1 P 2 f_2=P_2f_3+(1-P_2)f_1+1 \\ \qquad \\ f_1-\dfrac{1}{P_1}=P_2f_3+(1-P_2)f_1+1 \\ \qquad \\ P_2f_1=P_2f_3+\dfrac{1}{P_1}+1 \\ \qquad \\ f_1=f_3+\dfrac{1}{P_1P_2}+\dfrac{1}{P_2} f2=P2f3+(1−P2)f1+1f1−P11=P2f3+(1−P2)f1+1P2f1=P2f3+P11+1f1=f3+P1P21+P21
我们可以发现, f 1 = f i + 1 + 1 P 1 P 2 ⋯ P i + 1 P 2 P 3 ⋯ P i + ⋯ + 1 P i f_1=f_{i+1}+\dfrac{1}{P_1P_2\cdots P_i}+\dfrac{1}{P_2P_3\cdots P_i}+\cdots+\dfrac{1}{P_i} f1=fi+1+P1P2⋯Pi1+P2P3⋯Pi1+⋯+Pi1,也就是
f 1 = f i + 1 + ∑ j = 1 i ∏ k = j i 1 P k f_1=f_{i+1}+\sum\limits_{j=1}^i\prod\limits_{k=j}^i\dfrac{1}{P_k} f1=fi+1+j=1∑ik=j∏iPk1
我们知道 f n + 1 = 0 f_{n+1}=0 fn+1=0,那么就可以用这个式子来求 f 1 f_1 f1了。
时间复杂度为 O ( n ) O(n) O(n)。
code
#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
int n,p[200005];
long long now=1,ans=0;
long long mi(long long t,long long v){if(!v) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&p[i]);}for(int i=n;i>=1;i--){now=now*mi(p[i],mod-2)%mod*100%mod;ans=(ans+now)%mod;}printf("%lld",ans);return 0;
}
相关文章:
CF1265E Beautiful Mirrors
CF1265E Beautiful Mirrors 洛谷CF1265E Beautiful Mirrors 题目大意 Creatnx \text{Creatnx} Creatnx有 n n n面魔镜,每天她会问一面镜子:“我漂亮吗?”,第 i i i面魔镜有 p i 100 \dfrac{p_i}{100} 100pi的概率告诉 Creat…...
软件测试/测试开发丨利用ChatGPT自动生成架构图
点此获取更多相关资料 简介 架构图通过图形化的表达方式,用于呈现系统、软件的结构、组件、关系和交互方式。一个明确的架构图可以更好地辅助业务分析、技术架构分析的工作。架构图的设计是一个有难度的任务,设计者必须要对业务、相关技术栈都非常清晰…...
Java学习笔记(六)——面向对象编程(基础)
一、类与对象 (一)类与对象的概念 (二)对象内存布局 编辑 对象分配机制 编辑 (三)属性/成员变量 (四)创建对象与访问属性 二、成员方法 (一)方法…...
0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)
大纲 Tumbling Count WindowsmapreduceWindow Size为2Window Size为3Window Size为4Window Size为5Window Size为6 完整代码参考资料 之前的案例中,我们的Source都是确定内容的数据。而Flink是可以处理流式(Streaming)数据的,就是…...
车载终端构筑智慧工厂:无人配送车的高效物流体系
随着科技的不断进步和应用,智能化已经成为许多领域的关键词。在物流行业中,随着无人配送车的兴起和智慧工厂的崛起,车载终端正引领着无人配送车的科技变革之路。 文章同款:https://www.key-iot.com/iotlist/sv900.html 车载终端…...
插件_日期_lunar-calendar公历农历转换
现在存在某需求,需要将公历、农历日期进行相互转换,在此借助lunar-calendar插件完成。 下载 [1] 通过npm安装 npm install lunar-calendar[2]通过文件方式引入 <script type"text/javascript" src"lib/LunarCalendar.min.js">…...
【FreeRTOS】【STM32】08 FreeRTOS 消息队列
简单来说 消息队列是一种数据结构 任务操作队列的基本描述 1.如果队列未满或者允许覆盖入队,FreeRTOS会将任务需要发送的消息添加到队列尾。 2.如果队列满,任务会阻塞(等待)。 3.用户可以指定等待时间。 4.当其它任务从其等待的队列中读取入了数据(这时候队列未满…...
【计算机组成原理】CPU的工作原理
一.CPU的组成结构 CPU主要有运算器、控制器、寄存器和内部总线等组成,其大概的样子长这样: 看不懂没关系,我们将采用自顶而下的方法来讲解CPU的具体工作原理,我们首先来说一下什么叫寄存器,顾名思义,寄存器…...
部署ELK
一、elasticsearch #拉取镜像 docker pull elasticsearch:7.12.1 #创建ELK docker网络 docker network create elk #启动ELK docker run -d --name es --net elk -P -e "discovery.typesingle-node" elasticsearch:7.12.1 #拷贝配置文件 docker cp es:/usr/share/el…...
纯前端实现图片验证码
前言 之前业务系统中验证码一直是由后端返回base64与一个验证码的字符串来实现的,想了下,前端其实可以直接canvas实现,减轻服务器压力。 实现 子组件,允许自定义图片尺寸(默认尺寸为100 * 40)与验证码刷新时间(默认时间为60秒)…...
#django基本常识01#
1、manage.py 所有子命令的入口,比如: python3 manage.py runserver 启动服务 python3 manage.py startapp 创建应用 python3 manage.py migrate 数据库迁移 直接执行python3 manage.py 可显示所有子命令...
什么是物流RPA?物流RPA解决什么问题?物流RPA实施难点在哪里?
RPA指的是机器人流程自动化,它是一套模拟人类在计算机、平板电脑、移动设备等界面执行任务的软件。通过RPA,可以自动完成重复性、繁琐的工作,提高工作效率和质量,降低人力成本。RPA适用于各种行业和场景,例如财务、人力…...
乐鑫工程部署过程记录
一、获取编译环境 1、下载sdk,ESP-IDF 这里有很多发布版本,当前我选择的是4.4.6,可以选择下载压缩包,也可以git直接clone 2、配置编译环境 我选择的是Linux Ubuntu下部署开发环境 查看入门指南 选择对应的芯片,我…...
to 后接ing形式的情况
look forward to seeing you. (期待着见到你) She admitted to making a mistake. (承认犯了个错误) He is accustomed to working long hours. (习惯于长时间工作)...
我做云原生的那几年
背景介绍 在2020年6月,我加入了一家拥有超过500人的企业。彼时,前端团队人数众多,有二三十名成员。在这样的大团队中,每个人都要寻找自己的独特之处和核心竞争力。否则,你可能会沉没于常规的增删改查工作中࿰…...
@EventListener注解使用说明
在Java的Spring框架中,EventListener注解用于监听和处理应用程序中的各种事件。通过使用EventListener注解,开发人员可以方便地实现事件驱动的编程模型,提高代码的灵活性和可维护性。本文将详细探讨EventListener注解的使用方法和作用&#x…...
算法通关村第五关-白银挑战实现队列
大纲 队列基础队列的基本概念和基本特征实现队列队列的基本操作Java中的队列 队列基础 队列的基本概念和基本特征 队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,即我们常说的FIFO(first in fi…...
协力共创智能未来:乐鑫 ESP RainMaker 云方案线下研讨会圆满落幕
近日,乐鑫 ESP RainMaker 云方案线下研讨会(深圳)在亚马逊云科技与合作伙伴嘉宾的支持下成功举办,吸引了众多来自智能家电、照明电工、能源和宠物等行业的品牌客户、方案商和制造商。研讨会围绕如何基于乐鑫 ESP RainMaker 硬件连…...
读取谷歌地球的kml文件中的经纬度坐标
最近我在B站上传了如何获取研究边界的视频,下面分享一个可以读取kml中经纬度的matlab函数,如此一来就可以获取任意区域的经纬度坐标了。 1.谷歌地球中划分区域 2.matlab读取kml文件 function [sname,lon,lat] kml2xy(ip_kml) % ip_kml ocean_distubu…...
1深度学习李宏毅
目录 机器学习三件事:分类,预测和结构化生成 2、一般会有经常提到什么是标签label,label就是预测值,在机器学习领域的残差就是e和loss编辑3、一些计算loss的方法:编辑编辑 4、可以设置不同的b和w从而控制loss的…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
