当前位置:网站首页>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;
}
总结:
多多思考,掌握本质。
边栏推荐
- 谁是边缘计算服务的采购者?是这六个关键角色
- 计算需要的MIPI lane数目
- file IO-buffer
- How to be a Righteous Hacker?What should you study?
- Shell编程规范与变量
- win系统下pytorch深度学习环境安装
- 学会开会|成为有连接感组织的重要技能
- 诺诚健华通过注册:施一公家族身价15亿 高瓴浮亏5亿港元
- [SQL brush questions] Day3----Special exercises for common functions that SQL must know
- LeetCode Daily Question (1573. Number of Ways to Split a String)
猜你喜欢
随机推荐
配电网络扩展规划:考虑使用概率性能源生产和消费概况的决策(Matlab代码实现)
What would happen if disconnecting during the process of TCP connection?
Detailed installation steps and environment configuration of geemap
Introduction to the use of counter instructions in Rockwell AB PLC RSLogix5000
接口测试的概念、目的、流程、测试方法有哪些?
geemap的详细安装步骤及环境配置
B站数据分析岗实习生面试记录
FPGA - Memory Resources of 7 Series FPGA Internal Structure -03- Built-in Error Correction Function
翻译科技论文,俄译中怎样效果好
VLAN huawei 三种模式
xshell (sed command)
2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
LeetCode每日两题01:反转字符串 (均1200道)方法:双指针
JS中使用正则表达式g模式和非g模式的区别
Black cat takes you to learn Makefile Part 11: When the header file a.h changes, how to recompile all the .c files that depend on the header file a.h
ThreadLocal全面解析(一)
camera预览流程 --- 从HAL到OEM
文件IO-缓冲区
shell (text printing tool awk)
学会开会|成为有连接感组织的重要技能








