7_4_A题 A Dangerous Maze题解 [Light oj 1027](求期望)
2016-07-05 00:57
453 查看
题目链接
1. 在x分钟后使人逃出迷宫
2. 让人浪费x分钟
每次浪费时间以后人会‘失忆’,即每次做选择时对门的选择是完全随机的.
求走出迷宫所需时间的期望
设选中能出去的门的概率为 p=mn,则没选中的概率为 q=n−mn;
选中正确的门后花费时间的期望 E1=sumt1m,之后就直接离开迷宫;
选中不正确的门后花费时间的期望 E2=sumt2n−m,然后重新开始新的选择,直至离开迷宫。
所以最终的期望是E=p∗(E1)+q∗(E2+E)
展开得E=mn∗sumt1m+n−mn∗(sumt2n−m+E)
= mn∗E=sumt1+sumt2n
= E=sumt1+sumt2m
当没有正确的门即 m=0 时,不能走出迷宫,输出‘inf’。
简单题意
有n扇门,门有两种功能:1. 在x分钟后使人逃出迷宫
2. 让人浪费x分钟
每次浪费时间以后人会‘失忆’,即每次做选择时对门的选择是完全随机的.
求走出迷宫所需时间的期望
思路
不妨假设有m扇可以出去的门,正确的门使用的时间总和为sumt1,不正确的门使用的时间总和为sumt2,则对于每次选择来说,有两种结果:选中正确的门/没选中正确的门。设选中能出去的门的概率为 p=mn,则没选中的概率为 q=n−mn;
选中正确的门后花费时间的期望 E1=sumt1m,之后就直接离开迷宫;
选中不正确的门后花费时间的期望 E2=sumt2n−m,然后重新开始新的选择,直至离开迷宫。
所以最终的期望是E=p∗(E1)+q∗(E2+E)
展开得E=mn∗sumt1m+n−mn∗(sumt2n−m+E)
= mn∗E=sumt1+sumt2n
= E=sumt1+sumt2m
当没有正确的门即 m=0 时,不能走出迷宫,输出‘inf’。
代码
#include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std ; int gcd (int a,int b){ return b == 0 ? a:gcd(b,a%b); } int main(){ int T; scanf("%d" ,&T); int kase = 1; while(T--){ int n; scanf("%d", &n); int sum = 0; int posnum = 0; for(int i = 0; i < n ; i ++){ int temp; scanf("%d", &temp); sum += abs(temp); if(temp > 0) posnum ++; } if(posnum == 0) printf("Case %d: inf\n",kase++); else{ int gc = gcd(sum , posnum); printf("Case %d: %d/%d\n",kase++,sum/gc,posnum/gc); } } return 0; }
相关文章推荐
- k Sum | & ||
- 我的手机管家(7)骚扰拦截 适配器
- Android SDK Manager 中如果没有相应的镜像ARM XX Image
- 桥接模式 详解
- 滴水算法小结
- 树莓派IoT 学习1 学习计划及搭建samba环境
- 树形背包总结
- 32位plsql连接64位oracle
- iOS-NSURLSession类及代理使用详解
- Eclipse Java注释模板设置详解/版权声明及编码风格的注释
- Colorful Image Colorization 的环境配置
- python os.path模块
- logback自定义格式转换器
- Android Studio官方文档之工程项目概述篇
- laravel 控制器里 redirect url地址传两个参数的方法
- Python安装Mysql驱动出错解决(最新出炉)
- Python中PyQuery库的使用总结
- Android SDK无法更新解决方式(非常有效)
- 【leetcode】26. Remove Duplicates from Sorted Array
- 【leetcode】25. Reverse Nodes in k-Group