当前位置: 首页 > news >正文

第十三届蓝桥杯省赛C++ A组 爬树的甲壳虫(简单概率DP)

题目如下:

在这里插入图片描述

思路 or 题解:

概率DP

状态定义:

dp[i]dp[i]dp[i] 表示从树根到第 iii 层的期望

状态转移:

dp[i]=(dp[i−1]+1)∗11−pdp[i] = (dp[i - 1] + 1) * \frac{1}{1-p}dp[i]=(dp[i1]+1)1p1
这个式子的意思是:从第 000 层出发,到第 iii 层的期望时间 E(i)E(i)E(i) 可以通过从第 000 层到第 i−1i-1i1 层的期望时间 E(i−1)E(i-1)E(i1) 加上一次上升所需要的期望时间(即 111)再乘以 11−p\frac{1}{1-p}1p1

在期望中,1/(1−p)1/(1-p)1/(1p) 表示一个事件在不停地进行下去,直到该事件发生为止所需的期望次数。

简单解释一下这个 11−p\frac{1}{1-p}1p1
以第一个样例为例子:
期望 = 1∗12+2∗14+3∗18....1 * \frac{1}{2} + 2 * \frac{1}{4} + 3 * \frac{1}{8} ....121+241+381....
收敛与 11−p\frac{1}{1-p}1p1

这个式子是 等差 ×\times× 等比
具体如何得到,再此不再多赘述。

答案计算

DP递推

AC 代码如下:

/*
Make it simple and keep self stupid
author:Joanh_Lan
*/
#pragma GCC optimize(3)
#pragma GCC optimize("inline") // 如果比赛允许开编译器优化的话,可以默写这两段
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <numeric>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <bitset>
#include <set>
#include <random>
#include <ctime>
#include <queue>
#include <stack>
#include <climits>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);
#define int long long
#define ll long long
#define PII pair<int, int>
#define px first
#define py second
typedef std::mt19937 Random_mt19937;
Random_mt19937 rnd(time(0));
using namespace std;
const int mod = 998244353;
const int inf = 2147483647;
const int N = 100009;
int Mod(int a,int mod){return (a%mod+mod)%mod;}
//int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int inv(int a,int mod){return qmi(a,mod-2,mod);}
//int lcm(int a,int b){return a*b/__gcd(a,b);}
int n;
void solve()
{cin >> n;int ans = 0;for (int i = 1; i <= n; i++){int a, b;	cin >> a >> b;ans = ((ans + 1) * b) % mod * inv(b - a, mod) % mod;}cout << ans << '\n';
}
signed main()
{buff;int _ = 1;// cin >> _;while (_--)solve();
}
http://www.lryc.cn/news/34207.html

相关文章:

  • 手动集成Tencent SDK遇到的坑!!!
  • 三天吃透mybatis面试八股文
  • SpringBoot整合Quartz以及异步调用
  • Golang 中 Slice的分析与使用(含源码)
  • 瀑布开发与敏捷开发的区别,以及从瀑布转型敏捷项目管理的5大注意事项
  • “华为杯”研究生数学建模竞赛2007年-【华为杯】A题:建立食品卫生安全保障体系数学模型及改进模型的若干理论问题(附获奖论文)
  • 基于JavaWeb学生选课系统开发与设计(附源码资料)
  • centos7 oracle19c安装||新建用户|| ORA-01012: not logged on
  • 【算法设计-分治】递归与尾递归
  • HTML 编辑器
  • css盒模型详解
  • 函数模板(template关键字的应用)
  • 嵌入式学习笔记——使用寄存器编程操作GPIO
  • 图像的读取与保存
  • 【蓝桥杯集训·每日一题】AcWing 4074. 铁路与公路
  • 网络:TCP与UDP相关知识(详细)
  • 不好!有敌情,遭到XSS攻击【网络安全篇】
  • Mysql中Explain详解及索引的最佳实践
  • JavaScript 内的 this 指向
  • Java多种方法实现等待所有子线程完成再继续执行
  • 制造企业数字化工厂建设步骤的建议
  • 网上鲜花交易平台,可运行
  • 【实战】用 Custom Hook + TS泛型实现 useArray
  • 【LeetCode】剑指 Offer(18)
  • Kubernetes节点运行时从Docker切换到Containerd
  • 【编程基础之Python】12、Python中的语句
  • android h5餐饮管理系统myeclipse开发mysql数据库编程服务端java计算机程序设计
  • 容易混淆的嵌入式(Embedded)术语
  • Nodejs 中 JSON 和 YAML 互相转换
  • C++入门教程||C++ 修饰符类型||C++ 存储类