题1: Uva 1636 Headshot

题目大意:

给出一个000111序列,注意实际上是环状的。问是0出现的概率大,还是当前是0,下一个还是0的概率大。

问题比较简单,注意比较大小: A/C > B/D  <=> A * D > B * C

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cstdlib>
  4. #include <algorithm>
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. char str[];
  10.  
  11. void Solve(){
  12. int len = strlen(str);
  13. int cnt1 = , cnt2 = ;
  14.  
  15. for(int i = ; i < len; ++ i){
  16. if(i == len - ){
  17. if(str[i] == '') ++ cnt1;
  18. if(str[i] == '' && str[] == '') ++ cnt2;
  19. }
  20. else{
  21. if(str[i] == '') ++ cnt1;
  22. if(str[i] == '' && str[i + ] == '') ++ cnt2;
  23. }
  24. }
  25.  
  26. if(cnt2 * len > cnt1 * cnt1) puts("SHOOT");
  27. else if(cnt2 * len < cnt1 * cnt1) puts("ROTATE");
  28. else puts("EQUAL");
  29. }
  30.  
  31. int main(){
  32. while(scanf("%s", str) != EOF){
  33. Solve();
  34. }
  35.  
  36. return ;
  37. }

Uva 1636

题2: Uva 1637 Double Patience

扑克牌拿牌问题。开一个9维的数组,记忆化搜索。

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. double f[][][][][][][][][];
  6. bool vi[][][][][][][][][];
  7. char str[][], poker[][];
  8.  
  9. double dfs(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9){
  10. if(vi[p1][p2][p3][p4][p5][p6][p7][p8][p9])
  11. return f[p1][p2][p3][p4][p5][p6][p7][p8][p9];
  12. vi[p1][p2][p3][p4][p5][p6][p7][p8][p9] = true;
  13.  
  14. bool flag = false;
  15. int top[] = {, p1, p2, p3, p4, p5, p6, p7, p8, p9};
  16. double &x = f[p1][p2][p3][p4][p5][p6][p7][p8][p9];
  17.  
  18. for(int i = ; i <= ; ++ i)
  19. if(top[i]){
  20. flag = true;
  21. break;
  22. }
  23. if(!flag)
  24. return x = 1.0;
  25.  
  26. int cnt = ;
  27. double sumper = ;
  28.  
  29. for(int i = ; i <= ; ++ i){
  30. if(top[i]){
  31. for(int j = i + ; j <= ; ++ j){
  32. if(top[j] && poker[i][top[i]] == poker[j][top[j]]){
  33. cnt ++;
  34. top[i] --; top[j] --;
  35.  
  36. sumper += dfs(top[], top[], top[], top[], top[], top[], top[], top[], top[]);
  37.  
  38. top[i] ++; top[j] ++;
  39. }
  40. }
  41. }
  42. }
  43.  
  44. if(sumper > ) x = (double) sumper / cnt;
  45.  
  46. return x;
  47. }
  48.  
  49. int main(){
  50. while(~scanf("%s%s%s%s", str[], str[], str[], str[])){
  51. memset(f, , sizeof f);
  52. memset(vi, false, sizeof vi);
  53.  
  54. for(int i = ; i <= ; ++ i)
  55. poker[][i] = str[i -][];
  56. for(int i = ; i <= ; ++ i){
  57. scanf("%s%s%s%s", str[], str[], str[], str[]);
  58. for(int j = ; j <= ; ++ j)
  59. poker[i + ][j] = str[j - ][];
  60. }
  61.  
  62. dfs(, , , , , , , , );
  63.  
  64. printf("%.6lf\n", f[][][][][][][][][]);
  65. }
  66.  
  67. return ;
  68. }

Uva 1637

题3:Uva 1639 Candy

题目大意:

两盒子糖,每盒中都有N个,在一个盒子中取的概率是p,另一个是1-p,求一个盒子没有糖之后另一个盒子剩的糖数的期望。

式子不难列,高中数学期望会考。但是主要是计算,组合数是极大数,概率又是极小数,计算机算的话要取对数,把大数化小,小数化大,乘法变加,

除法变减。 注意精度。不要为了简化代码新定义变量等于一长串代码中的一部分,会挂精度。

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int N = + ;
  6.  
  7. int n, cnt = ;
  8. double p;
  9. long double fac[N];
  10.  
  11. int main(){
  12.  
  13. fac[] = ;
  14. for(int i = ; i <= ; ++ i)
  15. fac[i] = fac[i - ] + log(i);
  16.  
  17. while(~scanf("%d%lf", &n, &p)){
  18. double ans = ;
  19.  
  20. ++ cnt;
  21. if(p == || p == ){
  22. printf("Case %d: %.6lf\n", cnt, (double) n);
  23. continue;
  24. }
  25.  
  26. int U = * n;
  27.  
  28. for(int i = ; i <= n; ++ i){
  29. ans += exp(fac[U - i] - fac[n] - fac[n - i] + log(p) * (n + ) + log( - p) * (n - i)) * i + exp(fac[U - i] - fac[n] - fac[n - i] + log(p) * (n - i) + log( - p) * (n + )) * i;
  30. }
  31.  
  32. printf("Case %d: %.6lf\n", cnt, ans);
  33. }
  34.  
  35. return ;
  36. }

Uva 1639

数学期望和概率DP题目泛做(为了对应AD的课件)的更多相关文章

  1. 【整理】简单的数学期望和概率DP

    数学期望 P=Σ每一种状态*对应的概率. 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc.在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我高中就是这么 ...

  2. 动态规划之经典数学期望和概率DP

    起因:在一场训练赛上.有这么一题没做出来. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6829 题目大意:有三个人,他们分别有\(X,Y,Z\)块钱 ...

  3. POJ2096Collecting Bugs(数学期望,概率DP)

    问题: Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material ...

  4. 插头DP题目泛做(为了对应WYD的课件)

    题目1:BZOJ 1814 URAL 1519 Formula 1 题目大意:给定一个N*M的棋盘,上面有障碍格子.求一个经过所有非障碍格子形成的回路的数量. 插头DP入门题.记录连通分量. #inc ...

  5. 期望与概率dp

    概率与期望dp 定义: 概率:事件A发生的可能性,计作P(A) 期望:事件A结果的平均大小,记住E(x) ​ E(x)=每种结果的大小与其概率的乘积的和 注意计算概率时需要考虑是否要用容斥原理 期望d ...

  6. 【长期计划】Atcoder题目泛做

    之前学长跟我说的是700-的应该都能自己做? 然后1000-的应该都能有一定的思路? 记不清了 但总之是要智力康复一下 又加上文化课比较紧 所以这个大概就会是长期计划了 ————————————分鸽线 ...

  7. bzoj 3566: [SHOI2014]概率充电器 数学期望+换根dp

    题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 ...

  8. 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做

    题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #in ...

  9. 基尔霍夫矩阵题目泛做(AD第二轮)

    题目1: SPOJ 2832 题目大意: 求一个矩阵行列式模一个数P后的值.p不一定是质数. 算法讨论: 因为有除法而且p不一定是质数,不一定有逆元,所以我们用辗转相除法. #include < ...

随机推荐

  1. poj 3104 二分

    Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12568   Accepted: 3243 Descripti ...

  2. mysql 超时 问题处理

    当数据库出现10055和10048错误时,处理办法: 第一 链接超时设置(1)打开注册表:regedit 找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...

  3. java基础知识再学习--集合框架-对象的强、软、弱和虚引用

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...

  4. CentoS7装机

    按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...

  5. 【JAVA编码专题】UNICODE,GBK,UTF-8区别

    简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与g ...

  6. js修改window对象中的url历史记录

    //页面地址:http://localhost/11/account.html//访问页面后,地址变为:http://localhost/11/account.html?type=banana con ...

  7. 利用JavaScript 的formdata 进行无刷新上传文件

          <html>     <head>         <title></title>         <script type=&quo ...

  8. NAS4Free 安装配置(四)配置硬盘

    配置硬盘 磁盘管理 进入磁盘管理界面:Disks|Management 磁盘管理 点击Import disks导入磁盘 把第4个4G的DOM盘删掉,因为我们不在这个盘上存放数据 点Apply chan ...

  9. Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)

    首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...

  10. JAVASCRIPT实现XML分页

    为了方便用户查看大批量数据,我们会用到动态分页,因此分页功能是我们在网站上见过的最普遍也是最常用的一个功能模块了.而以往的信息分页都是连接到数据库的,每一次点击都必须要后台数据库的支持.这样不但服务器 ...