洛谷 P6858 深海少女与胖头鱼(期望dp)

Posted 尹昱钦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P6858 深海少女与胖头鱼(期望dp)相关的知识,希望对你有一定的参考价值。

传送门


解题思路

我才不是因为题目变蓝题了才做的呢
看一眼数据范围,普通期望dp(dp[n][m])比较容易想,但是只有卑微的25分。
发现 \\(n\\leq10^{14}\\),所以我们可以大胆推测做法只与m有关。
于是我们就从m入手思考这道问题。
\\(f(n,m)\\) 表示杀死n个带护盾的m个不带盾的期望步数,每次讨论攻击到的是带护盾的还是不带护盾的。

  • 当m==0时,\\(f(n,0)=1+f(n-1,1)\\)
  • 当m==1时,\\(f(n,1)=1+\\frac{1}{n+1}\\times f(n,0)+\\frac{n}{n+1}\\times f(n,1)\\)
  • 当 m>1 时,\\(f(n,m)=1+\\frac{m}{n+m}\\times f(n,m-1)+\\frac{n}{n+m}\\times f(n+m-1,1)\\)

这时候,我们只要能用一个多项式表示出 \\(f(n,1)\\),就能把n这一维去掉。
对于

\\[f(n,1)=1+\\frac{1}{n+1}\\times f(n,0)+\\frac{n}{n+1}\\times f(n,1) \\]

移项整理得

\\[f(n,1)=f(n,0)+(n+1) \\]

再带入 \\(f(n,0)\\),得

\\[\\begin{aligned} f(n,1)& =1+f(n-1,1)+(n+1)\\\\ & =f(n-1,1)+n+2\\\\ \\end{aligned}\\]

然后运用你的可爱的数学知识写出 \\(f(n,1)\\) 的函数关系式:

\\[f(n,1)=\\frac{n^2+5n+2}{2} \\]

于是就可以快乐的dp了。
注意事项:因为要取模,所以可以省去分子分母约分的过程,否则你O(m)的做法也会稳TLE。
惨痛经历
image
//改完了后因为省掉了一个log一跃成为最优解(翻身做主人)
image

AC代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cmath>
#include<algorithm>
using namespace std;
const long long mod=998244353;
long long n,m;
long long ksm(int x,int y){
	if(y==1) return x%mod;
	long long res=ksm(x,y/2);
	if(y&1) return res*res%mod*x%mod;
	return res*res%mod;
}
inline long long inv(int x){
	return ksm(x,mod-2);
}
struct node{
	long long p,q;
	node operator +(const node &x)const{
		node ans(0,0);
		ans.q=q*x.q%mod;
		ans.p=(x.q*p+q*x.p)%mod;
		return ans;
	}
	node operator *(const node &x)const{
		return node(x.p*p%mod,x.q*q%mod);
	}
	node(long long p,long long q):p(p),q(q){}
}dp(0,0);
node f(long long n){
	n%=mod;
	return node((n*n+5*n+2)%mod,2);
}
int main(){
	cin>>n>>m;
	if(m==0){
		dp=node(1,1)+f(n-1);
		cout<<dp.p*inv(dp.q%mod)%mod;	
		return 0;	
	}
	dp=f(n);
	for(int i=2;i<=m;i++){
		dp=node(1,1)+dp*node(i,(n+i)%mod)+node(n%mod,(n+i)%mod)*f(n+i-1);
	}
	cout<<dp.p*inv(dp.q%mod)%mod;
    return 0;
}

以上是关于洛谷 P6858 深海少女与胖头鱼(期望dp)的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P4012 深海机器人问题费用流

洛谷3830 [SHOI2012]随机树 概率dp

洛谷 P4012 深海机器人问题 最大费用最大流

●洛谷P1291 [SHOI2002]百事世界杯之旅

[ZJOI2015]地震后的幻想乡(期望+dp)

洛谷p3800:Power收集