2021牛客暑期多校训练营4 B-Sample Game(概率DP)

B-Sample Game

ding_ning123大佬题解
在这里插入图片描述
注:上述题解图片来自ding_ning123大佬题解

Code

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template <class T=int> T rd()
{T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg;
}
const int N=110,mod=998244353;int p[N],n,tot;
ll inv[N];
ll f[N],g[N];ll qmi(ll a,ll b)
{ll v=1;while(b){if(b&1) v=v*a%mod;a=a*a%mod;b>>=1;}return v;
}int main()
{n=rd();for(int i=1;i<=n;i++) p[i]=rd(),tot+=p[i];for(int i=1;i<=n;i++) inv[i]=qmi(tot-p[i],mod-2);f[n]=tot*inv[n]%mod;for(int i=n-1;i>=1;i--){f[i]=tot;for(int j=i+1;j<=n;j++) f[i]=(f[i]+p[j]*f[j]%mod)%mod;f[i]=f[i]*inv[i]%mod;}g[n]=(tot+2*p[n]*f[n]%mod)*inv[n]%mod;for(int i=n-1;i>=1;i--){g[i]=(tot+2*p[i]*f[i]%mod)%mod;for(int j=i+1;j<=n;j++) g[i]=(g[i]+p[j]*(g[j]+2*f[j])%mod)%mod;g[i]=g[i]*inv[i]%mod;}ll ans=1;ll invP=qmi(tot,mod-2);for(int i=1;i<=n;i++) ans=(ans+invP*p[i]%mod*(g[i]+2*f[i])%mod)%mod;printf("%lld\n",ans);return 0;
}

#4318. OSU!

【bzoj 4318】OSU!大佬题解
在这里插入图片描述
注:上述题解图片来自【bzoj 4318】OSU!大佬题解

Code1

上述递推式有一些瑕疵应该是:
fi,2=(1−pi)×fi−1,2+pi×(fi−1,2+2gi−1,1+1)f_{i,2}=(1-p_i)×f_{i-1,2}+p_i×(f_{i-1,2}+2g_{i-1,1}+1)fi,2=(1pi)×fi1,2+pi×(fi1,2+2gi1,1+1)
fi,3=(1−pi)×fi−1,3+pi×(fi−1,3+3gi−1,1+3gi−1,2+1)f_{i,3}=(1-p_i)×f_{i-1,3}+p_i×(f_{i-1,3}+3g_{i-1,1}+3g_{i-1,2}+1)fi,3=(1pi)×fi1,3+pi×(fi1,3+3gi1,1+3gi1,2+1)

#include<cstdio>double f[100005][4];
double g[100005][3];
int n;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){double p;scanf("%lf",&p);g[i][1]=p*(g[i-1][1]+1);g[i][2]=p*(g[i-1][2]+2*g[i-1][1]+1);f[i][1]=(1.0-p)*f[i-1][1]+p*(f[i-1][1]+1);f[i][2]=(1.0-p)*f[i-1][2]+p*(f[i-1][2]+2*g[i-1][1]+1);f[i][3]=(1.0-p)*f[i-1][3]+p*(f[i-1][3]+3*g[i-1][1]+3*g[i-1][2]+1);}printf("%.1lf\n",f[n][3]);return 0;
}

在这里插入图片描述

Code2

#include<cstdio>double f[100005][3];
int n;
int main()
{scanf("%d",&n);double ans=0;for(int i=1;i<=n;i++){double p;scanf("%lf",&p);f[i][0]=p*(f[i-1][0]+1);f[i][1]=p*(f[i-1][1]+2*f[i-1][0]+1);f[i][2]=p*(3*f[i-1][1]+3*f[i-1][0]+1);ans+=f[i][2];}printf("%.1lf\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6775-[NOI2020]制作菜品【贪心,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P6775 题目大意 nnn种原材料&#xff0c;第iii个有did_idi​个&#xff0c;mmm道菜品都需要kkk个原料而且每道菜最多只能用两种材料。 要求构造方案使得满足条件。 1≤n≤500,n−2≤m≤5000,1≤k≤5000,(∑i1ndi)mk1\leq n\l…

牛客题霸 [螺旋矩阵] C++题解/答案

牛客题霸 [螺旋矩阵] C题解/答案 题目描述 给定一个m x n大小的矩阵&#xff08;m行&#xff0c;n列&#xff09;&#xff0c;按螺旋的顺序返回矩阵中的所有元素。 题解&#xff1a; 其实就是模拟过程&#xff0c;先往左走&#xff0c;走到头向下走&#xff0c;到头后向左走…

递推:Ybtoj: D.4 序列个数

传送门 这题需要使用数形结合的思想 用一个矩形表示序列&#xff0c;若(i&#xff0c;j)点为1&#xff0c;表示第i个数是j 比如&#xff1a; 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 表示的序列是&#xff1a;41235 显然每行和每列都只能有一个1 回到本题&#xf…

codeforces280 C. Game on Tree(期望)

C. Game on Tree 单独考虑每个点对答案的贡献。 删除一个点的方案是删除它或者它的祖先&#xff0c;那么对答案的贡献是1depu\frac 1 {\text{dep}_u}depu​1​ #include<cstdio> #include<vector>int n; std::vector<int> g[100005]; int dep[100005]; vo…

OrchardCore 如何实现模块化( Modular )和 Multi-Tenancy

一、概述通常我们会在 Startup 类通过 void ConfigureServices(IServiceCollection services) 配置应用的服务。常见的形如 AddXXX 的方法&#xff0c;实际上调用的都是 IServiceCollection 或直接说是 ServiceCollection 的 AddSingleton 等方法。调用ApplicationBuilder 的 R…

P2350-[HAOI2012]外星人【线性筛】

正题 题目链接:https://www.luogu.com.cn/problem/P2350 题目大意 给出NNN质因数分解之后的结果&#xff0c;求每次Nφ(N)N\varphi(N)Nφ(N)&#xff0c;多少次后N1N1N1。 N∏i1mpiqi,1≤m≤2000,1≤pi≤105,1≤qi≤109N\prod_{i1}^mp_i^{q_i},1\leq m\leq 2000,1\leq p_i\le…

牛客题霸 [ 最长回文子串] C++题解/答案

牛客题霸 [ 最长回文子串] C题解/答案 题目描述 对于一个字符串&#xff0c;请设计一个高效算法&#xff0c;计算其中最长回文子串的长度。 给定字符串A以及它的长度n&#xff0c;请返回最长回文子串的长度。 题解&#xff1a; 两个方法&#xff1a; 一个是经典暴力&#…

强连通分量:洛谷P3387 模板:缩点

传送门 顾名思义&#xff0c;模板awa #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <string> #include <queue> #include <vector> #define ll long long usi…

2021牛客暑期多校训练营4 E-Tree Xor(异或+思维+区间交 or Trie树)

E-Tree Xor 首先不考虑区间限制条件&#xff0c;我们给定其中一个点的权值后&#xff0c;那么其他点的权值也就确定。比如 val10\text{val}_10val1​0&#xff0c;即可通过变得限制求出其他点valu\text{val}_uvalu​&#xff0c;而且不难发现如果val10⊕a\text{val}_10\oplus …

【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析

上篇文章我介绍了如何在网关上实现客户端自定义限流功能&#xff0c;基本完成了关于网关的一些自定义扩展需求&#xff0c;后面几篇将介绍基于IdentityServer4&#xff08;后面简称Ids4&#xff09;的认证相关知识&#xff0c;在具体介绍ids4实现我们统一认证的相关功能前&…

[科技]Loj#6564-最长公共子序列【bitset】

正题 题目链接:https://loj.ac/p/6564 题目大意 给两个序列a,ba,ba,b求它们的最长公共子序列。 1≤n,m,ai,bi≤71041\leq n,m,a_i,b_i\leq 7\times 10^41≤n,m,ai​,bi​≤7104 解题思路 无意间看到的一个bitsetbitsetbitset科技。 首先设fi,jf_{i,j}fi,j​表示aaa串匹配到…

牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案

牛客题霸 [找到字符串的最长无重复字符子串] C题解/答案 题目描述 给定一个数组arr&#xff0c;返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。 题解&#xff1a; i和j两个指针分别指不重复子串的两端&#xff0c;根据情况各自移动&#xff0c;记录最大…

并查集:P1196 [NOI2002] 银河英雄传说

传送门 带权并查集最棒了 dep记录深度&#xff0c;size记录集合大小 转移见代码 #include<cstdio> #include<algorithm> #include<iostream> using namespace std; const int N31000; int n,m; int t; int dep[N],fa[N],size[N]; char s; int a,b; int find…

2021牛客暑期多校训练营4 D-Rebuild Tree(prufer序列+树形dp)

D-Rebuild Tree Prufer 是这样建立的&#xff1a;每次选择一个编号最小的叶结点并删掉它&#xff0c;然后在序列中记录下它连接到的那个结点。重复n−2n-2n−2次后就只剩下两个结点&#xff0c;算法结束。&#xff08;为什么不是n−1n-1n−1次呢&#xff1f;因为第n−1n-1n−1…

牛客题霸 [ 求二叉树的层序遍历] C++题解/答案

牛客题霸 [ 求二叉树的层序遍历] C题解/答案 题目描述 给定一个二叉树&#xff0c;返回该二叉树层序遍历的结果&#xff0c;&#xff08;从左到右&#xff0c;一层一层地遍历&#xff09; 例如&#xff1a; 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3…

T183637-变异距离(2021 CoE III C)【单调栈】

正题 题目链接:https://www.luogu.com.cn/problem/T183637 题目大意 给出nnn个二元组(xi,yi)(x_i,y_i)(xi​,yi​)&#xff0c;求最大的 ∣xi−xj∣min{∣yi∣,∣yj∣}|x_i-x_j|\times min\{|y_i|,|y_j|\}∣xi​−xj​∣min{∣yi​∣,∣yj​∣} 1≤n≤2106,−106≤xi≤106,−…

dfs剪枝:洛谷P2809 hzwer爱折纸

传送门 解析 dfs暴力枚举即可 这题的重点是如何剪枝 不难发现&#xff0c;随着不断处理&#xff0c;纸条只会越来越短&#xff0c;且所有数字总加和不变 我一开始想到了2个条件&#xff1a; 1.当前长度比理想纸条小&#xff0c;return&#xff1b; 2.总加和与理想纸条不等&a…

2021牛客暑期多校训练营2 B-Cannon(组合+推式子)

B-Cannon 首先nnn个炮在一行操作一次的方案数为2(n−2)2(n-2)2(n−2):前面两个炮只能向右吃&#xff0c;最后两个跑只能向左吃&#xff0c;而其余的炮既可以向左也可以向右&#xff0c;于是有42(n−4)42(n-4)42(n−4)种 于是操作mmm次的操作排列的方案数为2m(n−2)(n−3)...(…

[译]聊聊C#中的泛型的使用

写在前面今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章&#xff0c;因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译&#xff0c;当然在翻译的过程中发现了一些问题&#xff0c;因此也进行了纠正&#xff0c;当然&#xff0c;原文的地址我放在最…

牛客题霸 [ 最长递增子序列] C++题解/答案

牛客题霸 [ 最长递增子序列] C题解/答案 题目描述 给定数组arr&#xff0c;设长度为n&#xff0c;输出arr的最长递增子序列。&#xff08;如果有多个答案&#xff0c;请输出其中字典序最小的&#xff09; 题意&#xff1a; 直接暴力会超时 应该用二分贪心 题解&#xff1a…