首页 > 其他分享 >CF1265E Beautiful Mirrors 题解

CF1265E Beautiful Mirrors 题解

时间:2024-02-29 20:11:06浏览次数:29  
标签:Beautiful 1p prod frac int 题解 CF1265E 2p aligned

CF1265E Beautiful Mirrors 题解

题目大意

题目传送门

你有 \(n\) 个点,当你在第 \(i\) 个点时,有 \(p_i\) 的概率到达点 \(i+1\),有 \(1-p_i\) 的概率回到点 1。当到达点 \(n+1\) 时,游戏结束。且期望进行的游戏次数。

\(1\le n\le2\times10^5\)。

题目分析

设 \(f_i\) 表示到达点 \(i\) 后还需进行的期望游戏次数,则有 \(f_{n+1}=0\)。

对于点 \(i(1\le i\le n)\),有

\[f_i=p_if_{i+1}+(1-p_i)f_1+1 \]

对于 \(i=n\) 时,因为有 \(f_{n+1}=0\),所以有

\[f_n=(1-p_n)f_1+1 \]

当 \(i=1\) 时,可以化简为

\[\begin{aligned} f_1&=p_1f_2+(1-p_1)f_1+1\\ &=f_2+\frac{1}{p_1} \end{aligned} \]

将上式带入 \(i=2\) 时,可得

\[\begin{aligned} f_2&=p_2f_3+(1-p_2)f_1+1\\ &=p_2f_3+(1-p_2)(f_2+\frac{1}{p_1})+1\\ &=f_3+\frac{-p_2+1}{p_1p_2}+\frac{1}{p_1} \end{aligned} \]

将上式代入 \(f_1=f_2+\frac{1}{p_1}\),可得

\[f_1=f_3+\frac{p_1+1}{p_1p_2} \]

类似地,可以求出

\[\begin{aligned} f_3&=f_4+\frac{-p_1p_3+p_1-p_3+1}{p_1p_2p_3}+\frac{1}{p_3}\\ f_4&=f_5+\frac{-p_1p_2p_4+p_1p_2-p_1p_4+p_1-p_4+1}{p_1p_2p_3p_4}+\frac{1}{p_4}\\ \end{aligned} \]

同样代入后可得

\[\begin{aligned} f_1&=f_4+\frac{p_1p_2+p_1+1}{p_1p_2p_3}\\ f_1&=f_5+\frac{p_1p_2p_3+p_1p_2+p_1+1}{p_1p_2p_3p_4} \end{aligned} \]

于是,可以发现以下规律

\[f_1=f_i+\frac{\sum_{j=0}^{i-2}\prod_{k=1}^jp_k}{\prod_{j=1}^{i-1}p_j} \]

则有

\[f_1=f_n+\frac{\sum_{i=0}^{n-2}\prod_{j=1}^ip_j}{\prod_{i=1}^{n-1}p_i} \]

代入 \(f_n=(1-p_n)f_1+1\),可得

\[f_n=\frac{1-p_n}{p_n}\frac{\sum_{i=0}^{n-2}\prod_{j=1}^ip_j}{\prod_{i=1}^{n-1}p_i}+\frac{1}{p_n} \]

于是可以先求出 \(f_n\),再求出 \(f_1\)。

代码

//Author:LIUIR
//2024.02.29
//Start coding:19:29:42
//Finish debugging:19:42:15
#include <bits/stdc++.h>
#define int long long

const int N = 2e5 + 5;
const int MOD = 998244353;

int n, ans, sum, p[N], mul[N];

int Pow(int, int);

signed main()
{
	int inv100 = Pow(100, MOD - 2);
	scanf("%lld", &n);
	for (int i = 1; i <= n; i++)
		scanf("%lld", &p[i]), p[i] = p[i] * inv100 % MOD;
	mul[0] = 1;
	for (int i = 1; i <= n; i++)
		mul[i] = mul[i - 1] * p[i] % MOD;
	for (int i = 0; i < n - 1; i++)
		sum = (sum + mul[i]) % MOD;
	sum = sum * Pow(mul[n - 1], MOD - 2) % MOD;
	ans = (1 - p[n] + MOD) % MOD * Pow(p[n], MOD - 2) % MOD * sum % MOD;
	ans = (ans + Pow(p[n], MOD - 2)) % MOD;
	ans = (ans + sum) % MOD;
	printf("%lld", ans);
	return 0;
}

int Pow(int x, int y)
{
	int res = 1;
	for (; y; x = x * x % MOD, y >>= 1)if (y & 1)
		res = res * x % MOD;
	return res;
}

标签:Beautiful,1p,prod,frac,int,题解,CF1265E,2p,aligned
From: https://www.cnblogs.com/liuir/p/18045352

相关文章

  • P2606 [ZJOI2010] 排列计数 题解
    题意:求有多少个排列满足:对于每一个\(2\lei\len\),\(a_i>a_{\frac{i}{2}}\)。首先我们会发现这些数之间的大小关系形成了一个完全二叉树,因为每一个\(a_i\)都必须小于\(a_{2\timesi}\)和\(a_{2\timesi+1}\)。会发现本题的方案和每个位置具体的值并没有关系,而只......
  • 打击犯罪(题解)
    题目题目描述样例输入722531342242233167257256样例输出1关于本题这个题反着想会很简单,也就是复活犯罪,但是这个反着的思路不好想到(比如我就没想到)。看其他blog基本上都是反着来的,确实复杂度小不少,但是别人写过的我就不写了,我就给出正着来的解......
  • [ABC282Ex] Min + Sum 题解
    [ABC282Ex]Min+Sum题解题面传送门。题目要求有多少对\((l,r)\)满足\(1\lel\ler\len\)且\(\sum_{i=l}^{r}{b_i}+\min_{i=l}^{r}{a_i}\leS\)。考虑CDQ分治,那么我们需要不断寻找有多少对\((l,r)\)满足\(L\lel\leM<r\leR\)且\(\sum_{i=l}^{r}{b......
  • P9836 种树 题解
    题目传送门前置知识质因数分解。贪心。题解思路先来解决一个问题,统计一个数\(x\)的正因数个数。可以将\(x\)质因数分解,得到每个数在\(x\)的质因数分解中出现了多少次。都知道质因数分解是每个数的唯一分解,那么统计个数的时候就只需要枚举每个质因数的出现个数。所以......
  • CF510C Fox And Names 题解
    CF510CFoxAndNames题解https://www.luogu.com.cn/problem/CF510C思路题意就是:确定一个小写字母的比较规则,使得给定的所有字符串在一开始就是按你确定的比较规则排序了的。可以发现:对于前后一对字符串,找到第一对不同的字符,是要这两个字符有合法的大小关系,就能满足题意。......
  • CF383C Propagating tree 题解
    题目链接:CF或者洛谷比较朴素的题,注意到这个涉及到子树变化,我们考虑优先处理出\(dfs\)序,方便处理。注意到第一个问题较为繁琐,我们着重解决下第一个问题。在树上问题,我们这种间隔点常常使用\(deep\)进行区分。根的\(deep\)为奇数,那么对自己子树范围内的奇数\(deep\)......
  • P2487 [SDOI2011] 拦截导弹 题解
    题目链接:拦截导弹约定:本题中提到的\(LDS\)和\(LIS\)不是严格单调,而是非严格单调,即为\(\le或者\ge\)。比较神奇的题,问的东西比较多,我们逐渐拆分:对于第一个问题而言,这个dp方程是很好写的:\[dp[i]=\max{dp[j]}+1(i<j,h[i]\leh[j],v[i]\lev[j])\]其中\(dp[i]\)即......
  • 题解 gym102900J 【Octasection】
    代码:#include<iostream>#include<algorithm>#include<stack>#include<vector>#include<cstdio>usingnamespacestd;typedefstructRectangle_tag{ intx1; intx2; inty1; inty2; Rectangle_tag(intx1_,intx2_,int......
  • 24冬网络流复习题解
    A是谁瞪了半个小时不会*2000呀,是谁呀是谁呀。感觉这题比部分紫题都难。。。首先发现选取字符的顺序并不重要,所以\(t\)可以看成\(26\)个字符要选的个数。设字符\(c\)出现了\(x\)次,那么直接向汇点连流量为\(x\)费用为\(0\)的边。然后考虑\(s_i\)与每个字符的关......
  • 2024年2月28号题解
    P4994终于结束的起点解题思路通过加法同余原理可以知道f[i]%m==0,那么f[i-1]%m=1,所有把f[i+1]%m=1转换成了f[i-1]%m=1的问题那么只需要填好斐波那契数列再判断就可以了,又因为斐波那契可能会超出int的范围那么我们对每一项斐波那契再取模就可以了代码......