蓝桥杯 - 概率计算 (概率DP)

题目传送:蓝桥杯 - 概率计算

概率计算

时间限制:1.0s   内存限制:256.0MB

锦囊1

锦囊2

锦囊3

问题描述

  生成n个∈[a,b]的随机整数,输出它们的和为x的概率。

输入格式

  一行输入四个整数依次为n,a,b,x,用空格分隔。

输出格式

  输出一行包含一个小数位和为x的概率,小数点后保留四位小数

样例输入

2 1 3 4

样例输出

0.3333

数据规模和约定

  对于50%的数据,n≤5.

  对于100%的数据,n≤100,b≤100.

思路:概率DP,好久没做DP题了,居然1A了,好愉快,定义状态dp[i][j]表示取i个数时和为j的概率,则可以知道初始时dp[0][0] = 1;递推具体看代码

AC代码:

#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <deque>
#include <cctype>
#define LL long long
#define INF 0x7fffffff
using namespace std;

double dp[105][5055];//dp[i][j]表示取i个数时和为j的概率 

int n, a, b, x;

int main() {
	scanf("%d %d %d %d", &n, &a, &b, &x);
	memset(dp, 0, sizeof(dp));
	dp[0][0] = 1;
	/*for(int i = 1; i < 5055; i ++) {
		dp[0][i] = 0;
	}*/
	int sum = b - a + 1;
	for(int i = 1; i <= n; i ++) {
		for(int j = 0; j <= x; j ++) {
			for(int k = a; k <= b; k ++) {
				if(j >= k) dp[i][j] += dp[i-1][j-k] / sum;
			}
		}
	}
	printf("%.4lf\n", dp[n][x]);
	return 0;
}
时间: 2024-10-30 04:28:05

蓝桥杯 - 概率计算 (概率DP)的相关文章

蓝桥杯 K好数(DP)

本文出自:http://blog.csdn.net/svitter 算法训练 K好数 时间限制:1.0s   内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.31.33 共7个.由于这个数目很大,请你输出它对1000000007取模后的值. 输入格式 输入包含两个正整数,K和L. 输出格式 输出一个整数,表示答案

蓝桥杯 阶乘计算

问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n.算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推. 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位. 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值.输入格式 输入包含一个正整数n,n<=1000.输出格式 输出n!的准确值.样例输入10样例输出 3628800 im

第八届蓝桥杯 承压计算 (代码+详解)

承压计算 标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形. 7 5 8 7 8 8 9 2 7 2 8 1 4 9 1 8 1 8 8 4 1 7 9 6 1 4 5 4 5 6 5 5 6 9 5 6 5 5 4 7 9 3 5 5 1 7 5 7 9 7 4 7 3 3 1 4 6 4 5 5 8 8 3 2 4 3 1 1 3 3 1 6 6 5 5 4 4 2 9 9 9 2 1 9 1

algo_156(蓝桥杯) 表达式计算

问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行. #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<cstrin

概率和期望DP

概率和期望DP(整理) 概率DP顺着推,期望DP逆着递推求解 概率,又称或然率.机会率.机率(几率)或可能性,是概率论的基本概念.概率是对随机事件发生的可能性的度量,一般以一个在0到1之间的实数表示一个事件发生的可能性大小.越接近1,该事件更可能发生:越接近0,则该事件更不可能发生.人们常说某人有百分之多少的把握能通过这次考试,某件事发生的可能性是多少,这都是概率的实例. 期望就是加权平均. 1.期望值是指人们对所实现的目标主观上的一种估计: 2.期望值是指人们对自己的行为和努力能否导致所企求之

【BZOJ-3450】Tyvj1952Easy 概率与期望DP

3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 468  Solved: 353[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o.比如ooxxxxooooxxx

bzoj 3566: [SHOI2014]概率充电器 树形DP

首先普及一个概率公式 P(A+B)=P(A)+P(B)-P(AB) 题意:一些充电元件和导线构成一棵树,充电元件是否能充电有2种情况, 1.它自己有qi%的概率充电 2.与它相邻的元件通过导线给它充电(导线有p%的概率导通) 求最终充了电的元件的期望 题解:首先可以将元件能否充电分成3种情况考虑, 1.它自己给自己充好了电 2.它的儿子方向给它传送了电 3.它的父亲方向给它传送了电. 对于1,题目已经给出可以直接赋值, 对于2,可以通过一次树的深度遍历求得.pson[now]=pson[now]

算法笔记_155:算法提高 概率计算(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 生成n个∈[a,b]的随机整数,输出它们的和为x的概率. 输入格式 一行输入四个整数依次为n,a,b,x,用空格分隔. 输出格式 输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出 0.3333 数据规模和约定 对于50%的数据,n≤5. 对于100%的数据,n≤100,b≤100. 2 解决方案 下面代码在系统中运行评分为90分,第五组数据无法通过,我用同版本的C代码运行(PS:具体参见文末

概率与期望dp相关

概率与期望dp 概率 某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A). 假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那么P(A)=m/n. 例如投掷一枚骰子,点数小于3的概率为2/6=1/3. 如果两个事件A和B所涵盖的结果没有交集,那么P(A或B发生)=P(A)+P(B) 还是掷骰子 P(点数小于3或点数大于4)=2/6+2/6=2/3 如果A和B所涵盖的结果有交集 那么P(A或B发生)=P(A)+P(B)-P(A与B同时发生) P(点数小于3或点数