CF 908D New Year and Arbitrary Arrangement——期望dp
题目:http://codeforces.com/contest/908/problem/D
注意是子序列。加一个a对ab个数无影响;加一个b使ab个数多出它前面的a那么多个。所以状态里记录有多少个a和ab。
当 i+j>=k 的时候,再加一个b就结束了。用式子算一下期望,发现一个等比数列;用等比数列的公式算一下,变成一个值减去一个无限小的值,所以就是那个值了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const int N=1005,mod=1e9+7; int n,A,B,tmp,C,dp[N][N]; bool vis[N][N]; int pw(int x,int k) { int ret=1;while(k){if(k&1)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=1;}return ret; } int dfs(int i,int j) { if(vis[i][j])return dp[i][j]; vis[i][j]=1; if(i+j>=n) return dp[i][j]=(i+j+C)%mod; dp[i][j]=((ll)A*dfs(i+1,j)+(ll)B*dfs(i,i+j))%mod; return dp[i][j]; } int main() { scanf("%d%d%d",&n,&A,&B); tmp=pw(A+B,mod-2); C=(ll)A*pw(B,mod-2)%mod; A=(ll)A*tmp%mod; B=(ll)B*tmp%mod; printf("%d\n",dfs(1,0)); return 0; }
分类:
数学--概率期望
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)