数学期望和概率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 < ...
随机推荐
- Mysql int(11) 和 int(1)
Mysql 可以为整数类型制定宽度,例如:int(11) ,对大多数应用这是没有意义的:它不会限制值的合法范围,它只是规定了Mysql的一些交互工具(例如mysql命令行客户端)用来显示字符个数.对于 ...
- 用phpMyAdmin修改mysql数据库密码
1初始数据库密码为空. 2第一步,点击phpMyAdmin里的用户选项. 3选择root localhost用户名,点击编辑权限. 4此时会出来修改权限的页面,里面可以设置的选项还是比较多的,暂时不管 ...
- 【android】java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused
调试中通过android simulator模拟器链接localhost或者127.0.0.1,因为我在电脑上面建立了apache,我的代码大概就是URL url = new URL(urlStrin ...
- java 编码转换
在网络中爬取到的数据,编码可能与当前编译器的编码不相同,而导致可能产生显示乱码的问题.那么如何将网络的编码,转换为当前编译器认可的编码(一般为UTF-8),就是个问题了. 主要使用了两个方法: Str ...
- uniq详解
一.简介 报告或删除文件中重复的行. uniq 命令读取由 InFile 参数指定的标准输入或文件.该命令首先比较相邻的行,然后除去第二行和该行的后续副本.重复的行一定相邻.(在发出 uniq 命令之 ...
- java设计模式--结构型模式--装饰模式
装饰模式 概述 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 适用性 1.在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职责. 2.处理 ...
- Node.js 和Socket.IO 实现chat WEBIM
socket官方: http://socket.io/ 需求:实现WEB IM功能,数据从服务器PUSH 不是PULL websocket是基于HTML5的新特性,不兼容IE6,7,8 .. ...
- jsp中全局变量和局部变量的设置
- apache 配置网站目录,虚拟目录,新端口
1 配置网站目录,以ubuntu为例 1)打开apache的默认配置文件夹:cd /etc/apache2/sites-available 2)打开配置文件,本机为sudo vi 000-defau ...
- Linux Java的环境变量搭建
JAVA JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完后,解压完并将其中的jdk文件夹移动到/u ...