当前位置:网站首页>CFdiv2-Beautiful Mirrors-(期望)
CFdiv2-Beautiful Mirrors-(期望)
2022-08-10 22:10:00 【可爱美少女】
题意:
就是有n个魔镜,小A每天都会问镜子,每个镜子说小A美丽的概率为p[i]。如果这个镜子说自己很美,那么下一天会问下一个镜子,如果没有下一个镜子了,那么这一天小A就很开心并且就停止了。如果说小A不美,那么小A下一天会从第一个镜子重新问。问你小A停止的时候天数的期望是多少。
思考:
- 由于一段时间没做期望有点淡忘。看到这题就感觉是很经典的题目,这种没有转移的一般不是期望dp。然后我就想直接套期望的几个公式?要么直接求第i天停止的概率,但是发现不好求。那么可以用公式所有>=i的概率之和,但是这个也不好求。要么是套路概率?成功是p,不成功是(1-p),那么期望就是1/p。但是这题目不使用这个套路,这个套路是不成功的哪个情况,永远都是走向不成功的,但是这个题目不成功的方向也可能会走向成功的地方。
- 但是之前过一道题,就是给你一条链,问你从1走到n的期望步数。这个题目也是不能套公式,也不适用套路,这个也是往左右后也可能往右边走,所以不使用套路。
- 这俩题是一类题。先说从1走到n的题目,如果直接求也不好求,由于期望的线性可加性,那么就可以定义一下xi的状态,让这个题目变得更好求一点。定义xi为从i走到i+1的期望步数。当我走到i点的时候,下一步要么走向i+1,要么走向i-1。如果直接走到i+1不用说了,如果走到i-1呢?如果走到i-1我还知道E(xi-1)的期望。那么E(xi)是不是就求出来和E(xi-1)的关系式了,那么就可以把所有的都推成关于E(x1)的关系式子。而且E(xi) = 1。那么这个题目就求出来了,可以发现对于每个点i,他一般就和几个点相关,那么如果相关的这几个点我知道期望,是不是i点的期望就可以求出来了,那么整个题目就解决了。首先你定义之后,一定要有一个点的期望是个已知的值,这样式子都推成关于这个值的关系式,最后求一下就可以了。
- 现在再看看这个题。如果我定义xi为从第i个镜子走到第i+1个镜子的期望步数,那么总期望就是这些的期望总和。推出来式子发现不好求。
虽然E(x1)可以确定,但是不好求出每个E(xi)与E(x1)关系式。这个定义方式就是照着上个题目定义的,所以可以看出,不同的题目定义方式还是要有一些独特的变化,解决本问题才会更简单。 - 那么我如果定义xi为从第i个镜子开始到停止的期望步数。那么可以确定的状态就是E(xn+1) = 0,因为它已经超过最后一个镜子了。那么推一推式子:
所以就求出来了E(x1)就是答案 - 所以这个题目也是从i点可以走向下一个点,也可以走向别的点,只要我把所有可以走的方向的期望都已知了,那么可以推出一个关于某个已知变量的关系式,那么题目就迎刃而解了。
代码:
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define db double
#define int long long
#define PII pair<int,int >
#define mem(a,b) memset(a,b,sizeof(a))
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
using namespace std;
const int mod = 998244353,inf = 1e18;
const int N = 2e5+10,M = 2010;
int T,n,m,k;
int va[N];
int ksm(int a,int b)
{
int sum = 1;
while(b)
{
if(b&1) sum = sum*a%mod;
a = a*a%mod;
b >>= 1;
}
return sum;
}
signed main()
{
IOS;
cin>>n;
for(int i=1;i<=n;i++) cin>>va[i];
int up = 0,down = 1,sum = 0,tp = ksm(100,mod-2)%mod;
for(int i=1;i<=n;i++)
{
up = (up+down)%mod;
down = down*va[i]%mod*tp%mod;
}
sum = up*ksm(down,mod-2)%mod;
sum = (sum%mod+mod)%mod;
cout<<sum;
return 0;
}
总结:
多多思考,掌握本质。
边栏推荐
- ASCII、Unicode和UTF-8
- 如何成为一名正义黑客?你应该学习什么?
- 2022年8月10日:使用 ASP.NET Core 为初学者构建 Web 应用程序--使用 ASP.NET Core 创建 Web UI(没看懂需要再看一遍)
- MySQL高级指令
- Spark基础【RDD转换算子】
- 边缘与云计算:哪种解决方案更适合您的连接设备?
- [SQL brush questions] Day3----Special exercises for common functions that SQL must know
- STL-stack
- LeetCode每日两题01:反转字符串 (均1200道)方法:双指针
- 2021IDEA创建web工程
猜你喜欢
边缘与云计算:哪种解决方案更适合您的连接设备?
计算需要的MIPI lane数目
Shell编程规范与变量
Conditional Statements of Shell Programming (2)
virtual address space
Common interview questions for APP UI automation testing, maybe useful~
高通平台开发系列讲解(应用篇)QCMAP应用框架介绍
RK3399 platform development series explanation (kernel-driven peripherals) 6.35, IAM20680 gyroscope introduction
爬虫request.get()出现错误
win系统下pytorch深度学习环境安装
随机推荐
OneNote 教程,如何在 OneNote 中整理笔记本?
MySQL高级指令
shell (text printing tool awk)
shell programming without interaction
商家招募电商主播要考虑哪些内容
财务年报怎样翻译,为什么要选择专业翻译公司?
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
使用 Cloudreve 搭建私有云盘
How to translate financial annual report, why choose a professional translation company?
BM13判断一个链表是否为回文结构
特别的三杯鸡
2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
谁是边缘计算服务的采购者?是这六个关键角色
Thread State 详解
unusual understanding
"DevOps Night Talk" - Pilot - Introduction to CNCF Open Source DevOps Project DevStream - feat. PMC member Hu Tao
Black cat takes you to learn Makefile Part 12: Summary of common Makefile problems
Service - DNS forward and reverse domain name resolution service
《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛
Regular expression of shell programming and text processor