洛谷P8774 [蓝桥杯 2022 省 A] 爬树的甲壳虫 题解 期望DP
题目链接:https://www.luogu.com.cn/problem/P8774
思路:
设 为甲壳虫从高度 到达高度 的期望时间。则:
因为从高度 走 步有 的概率到达高度 ,有 的概率到达高度 ,所以:
可以高斯消元,但是高斯消元没咋写过啊
考虑 的系数:
令
考虑常数项:
令
所以
示例程序:
#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
typedef long long ll;
void gcd(ll a , ll b , ll &d , ll &x , ll &y) {
if(!b) {d = a; x = 1; y = 0;}
else { gcd(b , a%b,d,y , x); y -= x * (a/b); }
}
ll inv(ll a , ll n = mod) {
ll d , x , y;
gcd(a , n , d, x , y);
return d == 1 ? (x+n)%n : -1;
}
const int maxn = 1e5 + 5;
int n;
long long x[maxn], y[maxn], p[maxn];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%lld%lld", x+i, y+i);
p[i] = x[i] * inv(y[i]) % mod;
}
ll X = p[1], Y = 1, tmp = 1;
for (int i = 2; i <= n; i++) {
// tmp = tmp * (1 - p[i-1] + mod) % mod;
tmp = tmp * (y[i-1] - x[i-1]) % mod * inv(y[i-1]) % mod;
X = (X + tmp * p[i] % mod) % mod;
Y = (Y + tmp) % mod;
}
ll ans = Y * inv((1 - X + mod) % mod) % mod;
printf("%lld\n", ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】