[LightOJ 1265] Island of Survival (概率)

2024-06-21 19:48

本文主要是介绍[LightOJ 1265] Island of Survival (概率),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LightOJ - 1265

一个岛上有若干只虎,若干只鹿,一个人
每天只有两个动物会相见
如果人和虎相见,人死
如果鹿和虎相见,鹿死
如果虎和虎相见,虎死
其他情况均没有伤亡,各种情况均等概率
问人活到虎全死光的概率有多少


感觉二维dp直接搞正确性很显然
但是网上有另一种做法,就是直接忽略掉鹿的存在,当没有鹿
不是很懂这样做的正确性,网上的解释是鹿吃与被吃,
与人没有关系,顶多延长游戏时间

有几个trick,如果虎的数量为奇数,那么人死定了,
如果虎的数量为 0 ,那么人直接赢

#pragma comment(linker, "/STACK:102400000,102400000")
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <map>
#include <set>
#include <queue>
#include <bitset>
#include <string>
using namespace std;
typedef pair<int,int> Pii;
typedef long long LL;
typedef unsigned long long ULL;
typedef double DBL;
typedef long double LDBL;
#define MST(a,b) memset(a,b,sizeof(a))
#define CLR(a) MST(a,0)
#define SQR(a) ((a)*(a))
#define PCUT puts("----------")int N,M;int main()
{#ifdef LOCALfreopen("in.txt", "r", stdin);
//  freopen("out.txt", "w", stdout);#endifint T;scanf("%d", &T);for(int ck=1; ck<=T; ck++){scanf("%d%d", &N, &M);printf("Case %d: ", ck);if(N==0) puts("1");else if(N&1) puts("0");else {DBL ans=1;while(N){ans *= (DBL)(N-1)/(N+1);N -= 2;}printf("%.8f\n", ans);}}return 0;
}

这篇关于[LightOJ 1265] Island of Survival (概率)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082167

相关文章

概率之常用概率分布

1. Bernoulli分布 单个二值随机变量的分布。它由单个参数控制,给出了随机变量等于1的概率。它具有如下的一些性质。 2. Multinoulli分布 Multinoulli分布(multinoulli distribution)或者范畴分布(categorical distribution)是指在具有k个不同状态的单个离散型随机变量上的分布,其中k是一个有限值。

概率之基础概念

1 概率分布(probability distribution) 用来描述随机变量或一簇随机变量在每一个可能取到的状态的可能性大小。描述概率分布的方式取决于随机变量是离散的还是连续的。 离散型变量和概率质量函数(probability mass function, PMF) 离散型随机变量的概率分布可以用PMF来描述。通常使用大写字母P来表示PMF。例如。 PMF将随机变量能够取得的每个状

概率p输出1,概率1-p输出0,等概率输出0和1

有个输出0和1的BIASED RANDOM,它以概率p输出1,以概率1-p输出0,以此RANDOM函数为基础,生成另一个RANDOM函数,该函数以1/2的概率输出1,以1/2的概率输出0 题目解答: 两次调用该RANDOM函数,如果其概率为P(x),调用2次 P(1) = p       P(0) = 1-p P'(1) =p      P'(0) = 1-p 概率如下: 11

[LightOJ 1292] Laser Shot (几何,判断共线)

LightOJ - 1292 刚开始写的时候是O( n3log(n) n^3log(n))的,枚举两个点,得到一条直线,用set记录下来,然后再 O( n n)地计数,居然没有卡过 orz 听了学长的教导,get到一个几何常用思路,正确解法如下 枚举一个点,再枚举其他点,计算到这个点的斜率,make_pair(dx,dy)塞到map里,把相同斜率的计数一下 这样时间复杂度为 O(n2log

[LightOJ 1364] Expected Cards (高维期望DP)

LightOJ - 1364 一副扑克牌,不断地从中抽牌 要求四种花色都至少要有给定的张数 其中如果抽到了王牌,可以将其变为任意花色 求满足条件时,抽出的期望张数 刚开始想错了,两张王牌并非在一开始就给定了 而是在游戏中可以视当前情况选择着变的 这两种方式是不一样的 由于牌数其实并不会很多, 复杂度乘一乘发现才 107 10^7级别的,所以直接暴力DP 将两张王牌当

[LightOJ 1342] Aladdin and the Magical Sticks (期望的线性性质+几何分布+邮票收集问题)

LightOJ - 1342 有 N根棍子,每根棍子都有一个权值 其中有若干根可识别的,若干根不可识别的 抽到了可识别的棍子,就不放回,抽到了不可识别的,就要放回 问所有棍子都至少被抽过一次后的期望权值和 根据期望的线性性, E(CX)=CE(X) E(CX) = CE(X) 所以可以对每根棍子求一下它被抽到的期望次数,再乘以它的权值 对于不可识别的棍子,由于它被抽到的概率

[LightOJ 1321] Sending Packets (SPFA+概率DP)

LightOJ - 1321 给定一张无向图,每条边都有一个通过的概率 如果无法通过,那么就要回到起点重新出发 从起点到终点的时间固定为 K K,如果成功到达, 又需要额外花费 KK的时间,问走 S S次的最小期望时间首先可以跑一遍SPFA求出一次通过的最大概率 pp 设跑一次的最小期望时间为 E E,E=p×2K+(1−p)×(E+2K)E = p\times 2K + (1-

[LightOJ 1274] Beating the Dataset (期望DP)

LightOJ - 1274 题目等价于,给定一个开头为 1的 01串, 求其中相邻两个字符不相等的期望对数 一开始煞笔了,其实 YES和 NO的个数是可以直接算出来的 算出来之后,设 dp[i][j][k] dp[i][j][k]为第 i i位,jj表示当前是 YES(1)或 NO(0) k k表示 ii位及以前一共有多少个 YES,然后倒着就推出来了 下一位出现 0

一个抽奖函数(自定义中奖项数和概率)

<? /* * 一个抽奖类,精确到万分之一 * 三个步骤:1.接受一个中奖概率数组;2.接受一个抽奖种子;3.返回中奖等级 */ class Lottery { /* * 中奖概率数组,自动判断奖项数目 * 数组键值和为100,自动计算出不中奖的概率,若初始是超过100抛出一个错误 */ protected $_rate = array(); /* * 设置中奖概率, * @param Ar

利用随机数实现指定概率抽奖

一、随机数与概率的规律 假设我们使用随机数生成器,可以产生1-100范围内随机数。 那么每次产生的随机数,其值可能是1-100范围内任意一个数,每个数的概率均等。 所以可以得出,随机数值V与概率P,有如下规律: 数值(V)概率(P)1 <= V <= 100100%V < 1 或 V > 1000%1 <= V <= 5050%50 <= V <= 10050%1 <= V <= 2020