上周三讲了概率和概率dp。如果没有涉及其他综合算法,概率这种题主要是思维,先把这部分的东西写完

给个题目链接:https://vjudge.net/contest/365300#problem

HeadShoot

题目大意:玩打枪赌命游戏,已知装弹序列,且装弹和打枪的顺序同一方向,已知上一次是哑炮,打完机械会自动转一节,存活率最大,选择直接SHOOT还是ROTATE之后再射击,

思路:题目已经给了很明显的暗示,已知上一次是哑炮,说明上一次的发生的事件会影响我当前弹夹1/0表示,这是一个条件概率,

如果shoot优选,则0之后更有可能0,状态为,00,P1=00/(00+01);

如果rotate优选,则0之后再移一位更有可能为0,有 010,000,

结果并不对,是因为题目还有一句话:“you can randomly rotate the gun’s cylinder”,这个旋转是随机的,没有规定只转一节!!!读题又先入为主了。。。

所以如果rotate优选,则此时相当于求一个混乱旋转后求概率,那么上一个是不是0这个前提后面的影响,就几乎没有了,所以,P2=0/(n);

按照顺序,从头检查到成一个环(不是到尾),检查完整个长度,头可以从任意位置开始,检查0,01和00的个数,比较P1,P2,化成乘法即可

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
const string e="EQUAL",r="ROTATE",s="SHOOT"; char a[];
int x,y,t;
int main () {
memset(a,,sizeof(a));
while(cin>>a) { x=;
t=;
int l=strlen(a); for(int i=; i<l; i++) {
if(a[i]=='') {
t++;
int g=(i+)%l;
if(a[g]=='') {
x++;
}
}
} if(x*l<t*t)cout<<r;
if(x*l==t*t)cout<<e;
if(x*l>t*t)cout<<s;
puts("");
memset(a,,sizeof(a));
} return ;
}

------

Cows and Cars

大前提:主持人开的门后面只有可能是牛。主持人相当于排除了一部分牛,那剩下的工作就是算,排除之后,总的门数,含车的门数

一定换门,所以n-1-show为剩下的总数,车的数目为一个不确定的值,因为并不知道一开始选了什么,需要分情况

  • 一开始是牛,那条件是cow/n,车总数不变,还是car,写成(cow/n)*car/(n-1-show)
  • 一开始是车,条件是car/n,车总数-1,car-1,写成(car/n)*(car-1)/(n-1-show)

叠加两种情况即可(贝叶斯)保证精度,先乘后除

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
double cow,car,show; int main() {
while(cin>>cow>>car>>show) {
double n=cow+car;
printf("%.5f\n",car*(car-1.0)/n/(n-1.0-show)+cow*car/n/(n-1.0-show)); }
return ;
}

Joining with Friend(坑题)

题意:你会在[t1,t2]时刻到,你朋友会在[s1,s2]时刻到,两个人都停留w,问两人碰面的概率

就是很典型的几何概率,概率统计的原题,P=相交阴影面积(交集)/总面积(并集),

一开始,打算分开两条直线讨论,分类讨论阴影面积的情形,没有普遍性,算的要死掉

结果情况实在是太多了,写又写不全,实在是难受(占个坑后面看看能不能写上)

不是只有缺小三角形的情形!!!!上面那条直线可以划到下面!!WA到吐

所以可以用 上面直线下边的面积(s1+s2)-下面直线下边的面积(s1)

 #include<cstdio>
using namespace std;
int t,s1,s2,t1,t2,w;
double solve(int w) {
if(t2+w<=s1) return ;
if(t1+w>=s2) return (s2-s1)*(t2-t1);
if(s1-w<=t1) { // left
if(s2-w>=t2)//right
return 0.5*(t1+w-s1+t2+w-s1)*(t2-t1);
else//up
return (s2-s1)*(t2-t1)-0.5*(s2-(t1+w))*(s2-w-t1);
} else { //down
if(t2+w<s2) //right
return 0.5*(t2-(s1-w))*(t2+w-s1);
else //up
return 0.5*(t2-(s2-w)+t2-(s1-w))*(s2-s1);
}
}
int main() {
scanf("%d",&t);
for(int tt=; tt<=t; tt++) {
scanf("%lf%lf%lf%lf%lf",&s1,&s2,&t1,&t2,&w);
double ans=solve(w)-solve(-w);
printf("Case #%d: %.8lf\n",tt,ans/((t2-t1)*(s2-s1)));
}
}

Standard Deviation UVA - 10886

给定一个随机数发生器, 用以下代码实现;

 unsigned long long seed;
long double gen() {
static const long double Z = ( long double )1.0 / (1LL<<);
seed >>= ;
seed &= ( 1ULL << ) - ;
seed *= seed;
return seed * Z;
}

输入seed的初始值,你的任务是求出它得到的前n个随机数标准差,保留小数点后5位(1<=n<=10000000,0<=seed<264)。

计算标准差,难点就是精度, 如果直接模拟,  用最高精度的 long double 试了一下,暴力可过

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include <cmath>
using namespace std;
typedef long long ll;
unsigned long long seed;
const ll M=+;
long double gen() {
static const long double Z = ( long double )1.0 / (1LL<<);
seed >>= ;
seed &= ( 1ULL << ) - ;
seed *= seed;
return seed * Z;
}
int N;
int n;
long double a[M];
long double sum;
long double ans;
int main() {
cin>>N;
int k=;
while(N--) {
k++;
memset(a,,sizeof(a));
scanf("%d%llu",&n,&seed);
sum=;
ans=;
for(int i=; i<=n; i++) {
a[i]=gen();
sum+=a[i];
}
sum/=n;
for(int i=; i<=n; i++) {
ans+=(a[i]-sum)*(a[i]-sum);
}
ans/=n;
ans=sqrt(ans);
printf("Case #%d: %.5Lf\n",k,ans);
}
return ;
}

如果要优化, 关键是化简计算式子,因为如果按照先加再除的办法,肯定存不下,这个平方公式还是很明显的

分开算就可以了

概率专题_概率/ 数学_基础题_ABEI的更多相关文章

  1. nyoj_239:月老的难题@_@(二分图匹配基础题)

    题目链接 放假回家不知道多少人被父母催着去相亲啊hhhhhhhhhhhhhh @_@ 参考:二分图的最大匹配.完美匹配和匈牙利算法 #include<bits/stdc++.h> usin ...

  2. BZOJ_3191_[JLOI2013]卡牌游戏_概率DP

    BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随 ...

  3. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  4. BZOJ_4872_[Shoi2017]分手是祝愿_概率与期望

    BZOJ_4872_[Shoi2017]分手是祝愿_概率与期望 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这 ...

  5. BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP

    BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技 ...

  6. BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs

    BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...

  7. BZOJ_1406_[AHOI2007]密码箱_枚举+数学

    BZOJ_1406_[AHOI2007]密码箱_枚举+数学 Description 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子 ...

  8. DP专题之概率DP

    注意:在概率DP中求期望要逆着推,求概率要正着推 概率DP求期望: 链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 dp[ i ]表示从i点走到n ...

  9. 二、多线程基础-乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁

    1.10乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁1)乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将 比较-设置 ...

随机推荐

  1. Redis 的键命令、HyperLogLog 命令、脚本命令、连接命令、服务器命令

    Redis 的键命令.HyperLogLog 命令.脚本命令.连接命令.服务器命令 Redis 的键命令 Redis 的键命令主要用于管理 Redis 的键,如删除键.查询键.修改键及设置某个键等. ...

  2. [剑指offer]14-1.剪绳子

    14-1.剪绳子 方法一 动态规划 思路:递归式为f(n)=max(f(i), f(n-i)),i=1,2,...,n-1 虽然我现在也没有彻底明白这个递归式是怎么来的,但用的时候还是要注意一下.f( ...

  3. hdu1429 胜利大逃亡(续)???天天逃亡???

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1429/ 题目就是迷宫问题的变种,给出一张地图,上面分布着钥匙和门,一种要是只能开一种特定的门,给出起点和终点,问 ...

  4. Chrome EC框架探索_0.0_引言

    0.0 引言 嵌入式硬件抽象框架常常面临着这样的尴尬:封装层次较高的(arduino,mbed)不能充分暴露必要的API并面临着性能问题,封装层次较低的(HAL,LL)接口复杂且开发困难.近日发现的一 ...

  5. [ICRA 2019]Multi-Task Template Matching for Object Detection, Segmentation and Pose Estimation Using Depth Images

    简介         本文作者提出新的框架(MTTM),使用模板匹配来完成多个任务,从深度图的模板上找到目标物体,通过比较模板特征图与场景特征图来预测分割mask和模板与检测物体之间的位姿变换.作者提 ...

  6. 【2019多校第一场补题 / HDU6582】2019多校第一场E题1005Path——最短路径+网络流

    HDU6582链接 题意 在一张有向图中,有一个起点和一个终点,你需要删去部分路径,使得起点到终点的最短距离增加(并不要求需要使得距离变成最大值),且删除的路径长度最短.求删去的路径总长为多少 分析 ...

  7. Pandas和Numpy的一些金融相关的操作(一)

    Pandas和Numpy的一些金融相关的操作 给定一个净值序列,求出最大回撤 # arr是一个净值的np.ndarray i = np.argmax( (np.maximum.acumulate(ar ...

  8. .NET Core技术研究-配置读取

    升级ASP.NET Core后,配置的读取是第一个要明确的技术.原先的App.Config.Web.Config.自定义Config在ASP.NET Core中如何正常使用.有必要好好总结整理一下,相 ...

  9. Conda安装包错误-CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/r/win-64/repodata.json> Elapsed:

    可能是防火墙问题:conda config --set ssl_verify false 安装 openssl . 换源: cmd输入conda config --add channels r 进入C ...

  10. A股调整结束 很可能明天开始阶段性反弹 目标3100左右

    A股调整结束 很可能明天开始阶段性反弹 目标至少AC等距. A浪2685-3059=374 C浪2715+374=3089 长周期看 A股处于 2300-4300长期震荡中.A股的牛市还要等几年.