假面

这道题目我维护每个回合每个人的每种血量的概率想到了,甚至DP也想到了,但是这个DP的方法太新了

因为本来维护每个回合每个人的每种血量的概率后,我们如果用组合数去选出若干个人计算概率,肯定时间复杂度太大了,这个时候我们一般都是用DP去统计满足条件的概率,所以要用DP,而且比较容易想到要计算\(g[i][j]\)表示第\(i\)个人以及其余还有\(j\)个人活着的概率(但是将第\(i\)个人放在最后,这确实是非常新的思想了,可以记住)

见这篇题解

一些解释:

\(f[i][j]\)涉及的\(i\)个人是某一次使用结界技能时题目给出的\(k\)个人(而不是全部\(n\)个敌人)

文章中说“\(f[k-1]\)就是\(g[i]\)”的意思是\(f[k-1][j]=g[i][j]\)

复杂度\(O(n^3)\)怎么算出来的:枚举每一个\(i\),将其放在最后,然后计算\(f\),一共是\(O(n\cdot n^2)=O(n^3)\)

最后倒着求那里,\(f[k-1][j]\)不应该放在分子那里,应该是\(f[k-1][j]\)等于后面那一坨分数;至于倒着求怎么想到的,我们最开始利用了换序来考虑整体,所以整体是不变的,可以考虑利用这个不变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值