HDU5159--BC--Card(概率写法,和组合写法)

2024-08-25 01:08

本文主要是介绍HDU5159--BC--Card(概率写法,和组合写法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


概率方法

要求出和的期望,期望的基本定理, 和的期望 = 各部分期望的和。

E(sum) = E(1) + E(2) + ... + E(x) ;

每个数在b次中只有选到和没选到两种情况,在b次中被选到的概率p =1 -  (1 - 1/x)^b ;

所以每个数的期望也是 i*( 1-(1-1/x)^b )

得到sum的期望。


#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
double e[110000] ;
double f(double x,int d)
{double ans = 1.0 ;if( d == 0 ) return 1.0 ;ans = f(x,d/2) ;ans *= ans ;if( d%2 )ans *= x ;return ans ;
}
int main()
{int t , tt , x, d , i ;scanf("%d", &t) ;for(tt = 1 ; tt <= t ; tt++){scanf("%d %d", &x, &d) ;for(i = 1 ; i <= x ; i++)e[i] = 1.0 - f(1.0-1.0/x,d) ;for(e[0] = 0 , i = 1 ; i <= x ; i++)e[0] += e[i]*i ;printf("Case #%d: %.3lf\n", tt, e[0]) ;}return 0;
}

组合方法

和的所有结果可能出现的和除以总的种类。


#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
double c[10] ;
int a[10][10] ;
int main()
{int t , tt , x , b , n , i , j ;double ans , k ;a[0][0] = 1 ;for(i = 1 ; i <= 5 ; i++){a[i][1] = 1 ;a[i][i] = a[i-1][i-1] * i ;}a[3][2] = 6 ;a[4][2] = 14 ; a[4][3] = 36 ;a[5][2] = 30 ; a[5][3] = 150 ; a[5][4] = 240 ;scanf("%d", &t) ;for(tt = 1 ; tt <= t ; tt++){ans = 0 ;scanf("%d %d", &x, &b) ;n = min(x,b) ;c[0] = 1 ;for(i = 1 ; i <= n-1 ; i++){for(j = 1 , k = 1 ; j <= i ; j++){k *= ((x-1)-j+1)*1.0/j ;}if( i >= 2 )c[i] = k/(x*1.0*x) ;elsec[i] = k ;}for(i = 1 ; i <= n ; i++){//printf("c -- %lf %lf\n", c[i-1], ((x+1)*1.0*x/2.0) * a[b][i]) ;k = c[i-1] * 1.0 * ((x+1)*1.0*x/2.0) * a[b][i] ;//printf("%lf\n", k) ;int m = b ;if( i >= 3 )m = b-2 ;for(j = 1 ; j <= m ; j++)k /= (x*1.0) ;//printf("%lf\n", k) ;ans += k ;}printf("Case #%d: %.3lf\n", tt, ans) ;}return 0;
}


这篇关于HDU5159--BC--Card(概率写法,和组合写法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

hdu4865(概率DP)

题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。 思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )  代码如下: #include <stdio.h>#include

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Go组合

摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合 组合使用注意项 使用匿名引入的方式来组合其他struct 默认优先调用外层方法 可以指定匿名struct以调用内层方法 代码 package mainimport ("fmt")type People struct{}type Pe

组合c(m,n)的计算方法

问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。       共四种方案。ps:注意使用限制。 方案1: 暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!,n<=15 ; int Combination(int n, int m) { const int M = 10007; int

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

INDEX+SMALL+IF+ROW函数组合使用解…

很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP、INDEX+MATCH中入门的,纵然你把全部的多条件查找方法都学会了而且运用娴熟,如VLOOKUP和&、SUMPRODUCT、LOOKUP(1,0/....,但仍然只能对这种一对多的查询望洋兴叹。   这里讲的INDEX+SMALL+IF+ROW的函数组合,

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠,b只黑鼠,A和B轮流从袋子里抓,谁先抓到白色谁就赢。A每次随机抓一只,B每次随机 抓完一只后 会有另外一只随机老鼠跑出来。如果两个人都没有抓到白色,那么B赢。A先抓,问A赢得概率。 w b 均在

【内网】ICMP出网ew+pingtunnel组合建立socks5隧道

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 通过环境搭建,满足以下条件: 攻击机模拟公网vps地址,WEB边界服务器(Windows Server 2008)模拟公司对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网同网段存在一台Windows内网服务