数学期望和概率DP题目泛做(为了对应AD的课件)
题1: Uva 1636 Headshot
题目大意:
给出一个000111序列,注意实际上是环状的。问是0出现的概率大,还是当前是0,下一个还是0的概率大。
问题比较简单,注意比较大小: A/C > B/D <=> A * D > B * C
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream> using namespace std; char str[]; void Solve(){
int len = strlen(str);
int cnt1 = , cnt2 = ; for(int i = ; i < len; ++ i){
if(i == len - ){
if(str[i] == '') ++ cnt1;
if(str[i] == '' && str[] == '') ++ cnt2;
}
else{
if(str[i] == '') ++ cnt1;
if(str[i] == '' && str[i + ] == '') ++ cnt2;
}
} if(cnt2 * len > cnt1 * cnt1) puts("SHOOT");
else if(cnt2 * len < cnt1 * cnt1) puts("ROTATE");
else puts("EQUAL");
} int main(){
while(scanf("%s", str) != EOF){
Solve();
} return ;
}
Uva 1636
题2: Uva 1637 Double Patience
扑克牌拿牌问题。开一个9维的数组,记忆化搜索。
#include <bits/stdc++.h> using namespace std; double f[][][][][][][][][];
bool vi[][][][][][][][][];
char str[][], poker[][]; double dfs(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9){
if(vi[p1][p2][p3][p4][p5][p6][p7][p8][p9])
return f[p1][p2][p3][p4][p5][p6][p7][p8][p9];
vi[p1][p2][p3][p4][p5][p6][p7][p8][p9] = true; bool flag = false;
int top[] = {, p1, p2, p3, p4, p5, p6, p7, p8, p9};
double &x = f[p1][p2][p3][p4][p5][p6][p7][p8][p9]; for(int i = ; i <= ; ++ i)
if(top[i]){
flag = true;
break;
}
if(!flag)
return x = 1.0; int cnt = ;
double sumper = ; for(int i = ; i <= ; ++ i){
if(top[i]){
for(int j = i + ; j <= ; ++ j){
if(top[j] && poker[i][top[i]] == poker[j][top[j]]){
cnt ++;
top[i] --; top[j] --; sumper += dfs(top[], top[], top[], top[], top[], top[], top[], top[], top[]); top[i] ++; top[j] ++;
}
}
}
} if(sumper > ) x = (double) sumper / cnt; return x;
} int main(){
while(~scanf("%s%s%s%s", str[], str[], str[], str[])){
memset(f, , sizeof f);
memset(vi, false, sizeof vi); for(int i = ; i <= ; ++ i)
poker[][i] = str[i -][];
for(int i = ; i <= ; ++ i){
scanf("%s%s%s%s", str[], str[], str[], str[]);
for(int j = ; j <= ; ++ j)
poker[i + ][j] = str[j - ][];
} dfs(, , , , , , , , ); printf("%.6lf\n", f[][][][][][][][][]);
} return ;
}
Uva 1637
题3:Uva 1639 Candy
题目大意:
两盒子糖,每盒中都有N个,在一个盒子中取的概率是p,另一个是1-p,求一个盒子没有糖之后另一个盒子剩的糖数的期望。
式子不难列,高中数学期望会考。但是主要是计算,组合数是极大数,概率又是极小数,计算机算的话要取对数,把大数化小,小数化大,乘法变加,
除法变减。 注意精度。不要为了简化代码新定义变量等于一长串代码中的一部分,会挂精度。
#include <bits/stdc++.h> using namespace std; const int N = + ; int n, cnt = ;
double p;
long double fac[N]; int main(){ fac[] = ;
for(int i = ; i <= ; ++ i)
fac[i] = fac[i - ] + log(i); while(~scanf("%d%lf", &n, &p)){
double ans = ; ++ cnt;
if(p == || p == ){
printf("Case %d: %.6lf\n", cnt, (double) n);
continue;
} int U = * n; for(int i = ; i <= n; ++ i){
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;
} printf("Case %d: %.6lf\n", cnt, ans);
} return ;
}
Uva 1639
数学期望和概率DP题目泛做(为了对应AD的课件)的更多相关文章
- 【整理】简单的数学期望和概率DP
数学期望 P=Σ每一种状态*对应的概率. 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc.在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我高中就是这么 ...
- 动态规划之经典数学期望和概率DP
起因:在一场训练赛上.有这么一题没做出来. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6829 题目大意:有三个人,他们分别有\(X,Y,Z\)块钱 ...
- POJ2096Collecting Bugs(数学期望,概率DP)
问题: Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material ...
- 插头DP题目泛做(为了对应WYD的课件)
题目1:BZOJ 1814 URAL 1519 Formula 1 题目大意:给定一个N*M的棋盘,上面有障碍格子.求一个经过所有非障碍格子形成的回路的数量. 插头DP入门题.记录连通分量. #inc ...
- 期望与概率dp
概率与期望dp 定义: 概率:事件A发生的可能性,计作P(A) 期望:事件A结果的平均大小,记住E(x) E(x)=每种结果的大小与其概率的乘积的和 注意计算概率时需要考虑是否要用容斥原理 期望d ...
- 【长期计划】Atcoder题目泛做
之前学长跟我说的是700-的应该都能自己做? 然后1000-的应该都能有一定的思路? 记不清了 但总之是要智力康复一下 又加上文化课比较紧 所以这个大概就会是长期计划了 ————————————分鸽线 ...
- bzoj 3566: [SHOI2014]概率充电器 数学期望+换根dp
题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 ...
- 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做
题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #in ...
- 基尔霍夫矩阵题目泛做(AD第二轮)
题目1: SPOJ 2832 题目大意: 求一个矩阵行列式模一个数P后的值.p不一定是质数. 算法讨论: 因为有除法而且p不一定是质数,不一定有逆元,所以我们用辗转相除法. #include < ...
随机推荐
- OpenCV——级联分类器(CascadeClassifier)
级联分类器的计算特征值的基础类FeatureEvaluator 功能:读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗口的操作setImage.setWindo ...
- OpenCV——ANN神经网络
ANN-- Artificial Neural Networks 人工神经网络 //定义人工神经网络 CvANN_MLP bp; // Set up BPNetwork's parameters Cv ...
- c++ 编译期计算 (一)
编译期就是编译器进行编译,产生.obj文件的所处的那一段时间(如果是广义的编译期,那么一般还包括了链接期,因为现在很多编译器都会自动调用链接器进行链接)执行期就是你执行某个已经链接好的程序的那段时间. ...
- hdu5323 Solve this interesting problem(爆搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Solve this interesting problem Time Limit ...
- html中embed标签的用法
(一).基本语法: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持.url为音频或视 ...
- PHP学习路上的一点心得
继学些了java后,接触php的项目后发现 php真的也是很强大的一门语言,这只是一篇回想,想到什么就写什么把,大家随便看看. 1.php其实无需等待,一般的改完代码后直接刷新页面即可,不需要像jav ...
- WordPress插件制作教程(四): 将数据保存到数据库
上一篇讲解了添加菜单的方法,这一篇为大家讲解如何将数据保存到数据库中,并且显示在页面上,不会因提交表单时刷新页面输入框中内容消失.要实现这一功能我们需要借助WordPress函数来实现,下面就来讲解具 ...
- IOS 音频播放
iOS音频播放 (一):概述 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改我也因此对于iOS下的音频播放实现有了一定的研究.写这个系列的博客目的一方面希望能够抛砖 ...
- poj3537--Crosses and Crosses
题意:有个一维棋盘,两人轮流下棋,然后谁连成三个谁赢 记得去年fj夏令营有见过这题,但是太弱了, 不会做. 记忆化搜索,如果n<=3肯定先手必胜,递推即可. #include<iostre ...
- 转:修改类不重启tomcat 自动加载项目
可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改.(修改类不用重启--热加载) (rel ...