LightOJ 1030 Discovering Gold(期望 概率)
正推,到达i的概率为p[i],要注意除了1和n外,到达i的概率并不一定为1
概率表达式为p[i] += p[j] / min(n - j, 6)
从j带过来的期望为exp[i] += exp[j] / min(n - j, 6)
又到达i时有价值val[i],到达i的概率为p[i],故exp[i] += val[i] * p[i]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #include<vector> #include<utility> using namespace std; typedef long long LL; const int N = 1008, INF = 0x3F3F3F3F; #define MS(a, num) memset(a, num, sizeof(a)) #define PB(A) push_back(A) #define FOR(i, n) for(int i = 0; i < n; i++) double exp [N], p[N]; int val[N]; int main(){ int t; cin>>t; for ( int cas= 1; cas <= t;cas++){ int n; cin>>n; for ( int i =1; i <= n; i++){ scanf ( "%d" , &val[i]); } p[1] = 1; exp [1] = val[1]; for ( int i = 2; i <= n; i++){ exp [i] = p[i] = 0; for ( int j = max(1, i - 6); j < i; j++){ exp [i] += exp [j] / min(n - j, 6); p[i] += p[j] / min(n - j, 6); } exp [i] += val[i] * p[i]; } printf ( "Case %d: %.10f\n" , cas, exp [n]); } return 0; } |
分类:
数学
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
· 近期最值得关注的AI技术报告与Agent综述!