P4564-[CTSC2018]假面【期望dp】

正题

题目大意:https://www.luogu.com.cn/problem/P4564


题目大意

nnn个人第iii个有mim_imi点血,每次有操作

  1. ppp的概率对一个人造成111点伤害(如果死了就不算,ppp每次都不同)
  2. 给出若干个人,对里面存活的人随机选择一个,求每个人被选中的概率

最后要求输出每个人的期望血量


解题思路

pi,jp_{i,j}pi,j表示第iii个人剩余jjj点血的概率。这个可以O(Qn)O(Qn)O(Qn)的时间内维护。

考虑如何计算概率,因为存活人数的不同,产生的贡献也不同,我们设fi,jf_{i,j}fi,j表示第iii个人以外的人存活了jjj个的概率,这个很容易可以在O(Cn2)O(Cn^2)O(Cn2)的时间内算,但是这样显然过不去。

所以我们要进行优化,我们可以在O(n2)O(n^2)O(n2)的时间内算出gig_igi表示所有人里存活iii个人的概率,也就是有(以下为了方便定义pip_ipi表示1−pi,01-p_{i,0}1pi,0即第iii个人存活的概率):
gi=gi−1∗pu+gi∗(1−pu)g_i=g_{i-1}*p_u+g_{i}*(1-p_u)gi=gi1pu+gi(1pu)

显然我们可以从fuf_{u}fu推到ggg
gi=fu,i∗(1−pu)+fu,i−1∗pug_i=f_{u,i}*(1-p_u)+f_{u,i-1}*p_ugi=fu,i(1pu)+fu,i1pu可以回推回来也就是
⇒fu,i=gi−fu,i−1∗pu1−pu\Rightarrow f_{u,i}=\frac{g_i-f_{u,i-1}*p_u}{1-p_u}fu,i=1pugifu,i1pu

这样我们就可以在O(Cn2)O(Cn^2)O(Cn2)的时间内算出所有的fu,if_{u,i}fu,i来统计答案。因为求逆元也很慢,所以我们先线性推逆元预处理一下比较小的值。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
const int XJQ=998244353;
int n,Q,p[210][210],c[210],g[210],f[210],in[210];
int power(int x,int b){int ans=1;x%=XJQ;while(b){if(b&1)ans=1ll*ans*x%XJQ;x=1ll*x*x%XJQ;b>>=1;}return ans;
}
int read() {int x=0,f=1; char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f;
}
void print(int x){if (x>9) print(x/10); putchar(x%10+48); return;
}
signed main()
{n=read();for(int i=1;i<=n;i++)p[i][read()]=1;Q=read();in[1]=1;for(int i=2;i<=n;i++)in[i]=(long long)XJQ-(long long)XJQ/i*in[XJQ%i]%XJQ;while(Q--){int op=read();if(op==0){int id=read(),u=read(),v=read();u=1ll*u*power(v,XJQ-2)%XJQ;p[id][0]=(p[id][0]+1ll*p[id][1]*u)%XJQ;for(int i=1;i<=100;i++)p[id][i]=(1ll*p[id][i+1]*u+1ll*p[id][i]*(1-u+XJQ))%XJQ;}else{int k=read(),x,ans=0;for(int i=1;i<=k;i++)c[i]=read();memset(g,0,sizeof(g));g[0]=1;for(int i=1;i<=k;i++){for(int j=i;j>=1;j--)g[j]=(1ll*g[j]*p[c[i]][0]+1ll*(1-p[c[i]][0]+XJQ)*g[j-1])%XJQ;g[0]=1ll*g[0]*p[c[i]][0]%XJQ;}for(int i=1;i<=k;i++){int ans=0,z=(1-p[c[i]][0]+XJQ)%XJQ,inv=power(p[c[i]][0],XJQ-2);if(p[c[i]][0]==1){printf("0 ");continue;}if(p[c[i]][0]==0)for(int j=0;j<k;j++)f[j]=g[j+1];else{f[0]=1ll*g[0]*inv%XJQ;for(int j=1;j<k;j++){f[j]=(g[j]-1ll*f[j-1]*z%XJQ+XJQ)%XJQ;f[j]=1ll*f[j]*inv%XJQ;}}for(int j=0;j<k;j++)(ans+=1ll*f[j]*in[j+1]%XJQ)%=XJQ;print(1ll*ans*z%XJQ);putchar(' ');}putchar('\n'); }}for(int i=1;i<=n;i++){int ans=0;for(int j=1;j<=100;j++)ans=(ans+1ll*p[i][j]*j%XJQ)%XJQ;print(ans);putchar(' ');}
}

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

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

相关文章

VAE(变分自编码器)学习笔记

VAE学习笔记 普通的编码器可以将图像这类信息编码成为特征向量. 但通常这些特征向量不具有空间上的连续性. VAE(变分自编码器)可以将图像信息编码成为具有空间连续性的特征向量. 方法是向编码器和解码器中加入统计信息,即特征向量代表的的是一个高斯分布,强迫特征向量服从高…

小 X 的 AK 计划

小 X 的 AK 计划 题目大意&#xff1a; 有n个点&#xff0c;到一个点&#xff08;时间为距离&#xff09;并花一些时间可以A掉此点&#xff0c;问最多可以A多少个点 原题&#xff1a; 解题思路&#xff1a; 先按位置从小到大排序&#xff0c;然后到每一个点并A掉的时间加在…

.NET Core 2.1的重大缺陷延长了.NET Core 2.0的寿命

微软近日宣布&#xff0c;.NET Core 2.0 即将 "寿终正寝"&#xff0c;对它的支持将在2018年10月1日结束。.NET Core 2.0 是一个非长期支持&#xff08;LTS&#xff09;的版本&#xff0c;因此微软的承诺是在下一个版本发布的三个月之后结束对它的支持。由于 .NET Cor…

P4782-[模板]2-SAT问题【tarjan】

正题 题目链接:https://www.luogu.com.cn/problem/P4782 题目大意 给若干个条件限定为xi为a或xj为bx_i为a或x_j为bxi​为a或xj​为b。求构造一个序列xxx满足所有条件 解题思路 我们对于每个xix_ixi​构造两个点分别表示xix_ixi​为0/10/10/1。然后就开始对能够确定的条件关系…

区间dp专题

区间dp专题 基本思想 区间dp一类的问题往往子问题具有很明显的区间性质,也就是说我们可以通过将子问题定义为整个区间的一个子区间.因为一个大区间可以切分成两段相邻的子区间.从这点出发,我们便可以找到递推关系. 1.纸牌游戏 蜘蛛牌游戏规则是这样的&#xff1a;只能将牌拖…

.Net Core开发日志——Global Tools

.Net Core 2.1引入了一个新的功能&#xff0c;Global Tools&#xff0c;其本质是包含控制台应用程序的nuget包&#xff0c;目前而言&#xff0c;还没有特别有用的工具&#xff0c;不过相信随着时间的推移&#xff0c;各种有创意或者实用性强的Global Tools会出现在大家的视野里…

【DP】回文词 (ssl 1813)

回文词 ssl 1813 题目大意&#xff1a; 给出一个式子&#xff0c;最少要加多少个字符才能让这个式子是一个“回文词” 原题&#xff1a; 题目描述 回文词是一种对称的字符串,也就是说:一个回文词,从左向右读和从右向左读的结果都是一样的.任意给定一个字符串,通过插入若干…

POJ3678-Katu Puzzle【2-SAT】

正题 题目链接:http://poj.org/problem?id3678 题目大意 nnn个xix_ixi​为0/10/10/1。有mmm个条件表示xiandxjax_i\ and\ x_jaxi​ and xj​a或xiorxjax_i\ or\ x_jaxi​ or xj​a或xixorxjax_i\ xor\ x_jaxi​ xor xj​a。 求构造一组合法的xix_ixi​。 解题思路 讨论一下 …

Simple-Faster-RCNN源码学习笔记

Simple-Faster-RCNN 源码学习 项目github地址: https://github.com/chenyuntc/simple-faster-rcnn-pytorch 源码 源文件: model/utils/bbox_tools.py 方法: loc2bbox(src_bbox, loc) 参数含义: src_bbox描述的是bbox的坐标.loc表示的偏移(offsets)和缩放尺度(scales). 给…

API网关模式

什么是网关网关一词来源于计算机网络中的定义&#xff0c;网关(Gateway)又称网间连接器、协议转换器。网关的准确定义是&#xff1a; 两个计算机程序或系统之间的连接&#xff0c;网关作为两个程序之间的门户&#xff0c;允许它们通过不同计算机之间的协议通信来共享信息。顾名…

楼层

楼层 题目大意&#xff1a; 有两个数m和t&#xff0c;问1~m之间去掉有数字t的数之后还有多少个数 原题&#xff1a; 题目描述 mxy 感觉新世界的大门打开了。 ta 决定要在新世界的旅馆中找间房住。已知新世界每天都有一个高能的数字 t&#xff0c;这个数字在楼层中是不会出…

P3825-[NOI2017]游戏【2-SAT】

正题 题目链接:https://www.luogu.com.cn/problem/P3825 题目大意 nnn场比赛&#xff0c;对于场地aaa不能用赛车AAA&#xff08;b,cb,cb,c以此类推&#xff09;&#xff0c;对于场地xxx可以用任何赛车。然后给定mmm条条件形如iIjJi\ I\ j\ Ji I j J表示在第iii场比赛使用赛车I…

CVPR19 基于图卷积网络的多标签图像识别模型 论文笔记

笔记 旷视研究院的研究员提出了如下模型,用于图像的多标签分类. 该模型与一般模型不一样的一点是,它的分类器是生成的,因此它有一个专门生成分类器的子网络. 网络主要由两部分构成 特征表示子网络,该网络由ResNet-101构成,即蓝色框圈出的部分.分类器生成子网络,该网络由3个…

日行千里,全凭“车”况,为什么我们要升级平台

历经一个半月的时间&#xff0c;不管是叫工业互联网平台还是叫工业大数据平台&#xff0c;从1.0版本升级到2.0版本&#xff0c;升级部分包括&#xff1a;客户端&#xff08;网关&#xff09;、服务端&#xff08;数据接收、数据处理、计算服务&#xff09;、底层数据库结构、WE…

朋友

朋友 题目大意&#xff1a; 有两堆数&#xff0c;只有第一堆数会和第二堆数中比自己小的数交“朋友”&#xff0c;问有多少对朋友 原题&#xff1a; 题目描述 mxy 即将前往新世界。 在前往新世界的过程中&#xff0c;ta 遇见了两种人。一种是只和 lowb 做朋友&#xff0c;…

好代码是管出来的——.Net Core中的单元测试与代码覆盖率

测试对于软件来说&#xff0c;是保证其质量的一个重要过程&#xff0c;而测试又分为很多种&#xff0c;单元测试、集成测试、系统测试、压力测试等等&#xff0c;不同的测试的测试粒度和测试目标也不同&#xff0c;如单元测试关注每一行代码&#xff0c;集成测试关注的是多个模…

P3694-邦邦的大合唱站队【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3694 题目大意 nnn个人&#xff0c;有mmm个队伍&#xff0c;每个人都属于一个队伍。要求叫出一些人来&#xff0c;然后任意插入出来的空隙中使得同一队的人在一起。求最少出列人数。 解题思路 如果知道最终的队列就可以十分…

数字图像处理作业

图像处理作业 1 取sT(r)11(mr)EsT(r)\frac{1}{1(\frac{m}{r})^E}sT(r)1(rm​)E1​ 其中rrr为原始亮度&#xff0c;mmm为输入区间的中点&#xff0c;EEE描述曲线的陡峭程度 2 一幅8灰度级图像具有如下所示的直方图&#xff0c;求直方图均衡后的灰度级和对应概率&#xff0c;…

【差分】侦察兵

侦察兵 题目大意&#xff1a; 给出一个图&#xff0c;再给一些点&#xff0c;求出这些点左上角和右下角的数之和 原题&#xff1a; 题目描述 mxy 沉迷于一个辣鸡游戏不可自拔。 游戏地图是一个 n*n 的矩形&#xff0c;在每个单位格子上有一个数字&#xff0c;代表当前位置…

深港澳大湾区(深圳).NET技术交流会圆满成功

2018年7月7日一场以.NET Core微服务和机器学习为主题的交流会成功在深圳职业技术学院落下帷幕。这次活动在短短的一周时间内&#xff0c;报名人数超过了170人&#xff0c;除了一些同学临时有事&#xff0c;基本都到现场了&#xff0c;特别感谢深职院的软创工作室对这次活动的支…