POJ-1322 Chocolate(概率DP)
Chocolate
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 9279 Accepted: 2417 Special Judge
Description
In 2100, ACM chocolate will be one of the favorite foods in the world.
“Green, orange, brown, red…”, colorful sugar-coated shell maybe is the most attractive feature of ACM chocolate. How many colors have you ever seen? Nowadays, it’s said that the ACM chooses from a palette of twenty-four colors to paint their delicious candy bits.
One day, Sandy played a game on a big package of ACM chocolates which contains five colors (green, orange, brown, red and yellow). Each time he took one chocolate from the package and placed it on the table. If there were two chocolates of the same color on the table, he ate both of them. He found a quite interesting thing that in most of the time there were always 2 or 3 chocolates on the table.
Now, here comes the problem, if there are C colors of ACM chocolates in the package (colors are distributed evenly), after N chocolates are taken from the package, what’s the probability that there is exactly M chocolates on the table? Would you please write a program to figure it out?
Input
The input file for this problem contains several test cases, one per line.
For each case, there are three non-negative integers: C (C <= 100), N and M (N, M <= 1000000).
The input is terminated by a line containing a single zero.
Output
The output should be one real number per line, shows the probability for each case, round to three decimal places.
Sample Input
5 100 2
0
Sample Output
0.625
题意:就是在一堆巧克力中选取n个,每当有两个颜色一样的巧克力就把他们吃了,问,桌面上剩下的巧克力是m个的概率。这是一道概率DP题目。状态转移方程:
dp[i][j]=dp[i-1][j-1](c-(j-1))/(c*1.0)+dp[i-1][j+1](j+1)/(c*1.0);
此题注意,数据量相当大,有两个节省大量时间的减值,一个是若m和n同奇或同偶的,则概率为0
n大于1000的时候,
if(n>1000)
{
n=1000+n%2;
}
似乎用到统计学的知识,反正大于1000,之后的数据量影响不大,相当于1000或者1001;
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
using namespace std;
double dp[1010][105];
int c,n,m;
int main()
{
while(scanf("%d",&c)!=EOF)
{ if(c==0)
break;
scanf("%d%d",&n,&m);
if(m>c||m>n||((n%2)!=(m%2)))
{
printf("0.000\n");
}
else
{
if(n>1000)
{
n=1000+n%2;
}
memset(dp,0,sizeof(dp));
dp[0][0]=1;
dp[1][0]=0;
for(int i=1;i<=n;i++)
{
dp[i][0]=dp[i-1][1]*(1)/(c*1.0);
dp[i][c]=dp[i-1][c-1]*(c-(c-1))/(c*1.0);
for(int j=1;j<c;j++)
{
dp[i][j]=dp[i-1][j-1]*(c-(j-1))/(c*1.0)+dp[i-1][j+1]*(j+1)/(c*1.0);
}
}
printf("%.3lf\n",dp[n][m]);
}
}
return 0;
POJ-1322 Chocolate(概率DP)的更多相关文章
- poj 1322 Chocolate (概率dp)
///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...
- POJ 3156 - Interconnect (概率DP+hash)
题意:给一个图,有些点之间已经连边,现在给每对点之间加边的概率是相同的,问使得整个图连通,加边条数的期望是多少. 此题可以用概率DP+并查集+hash来做. 用dp(i,j,k...)表示当前的每个联 ...
- POJ 1322 Chocolate
Chocolate Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8245 Accepted: 2186 Speci ...
- POJ 3071 Football(概率DP)
题目链接 不1Y都对不住看过那么多年的球.dp[i][j]表示i队进入第j轮的概率,此题用0-1<<n表示非常方便. #include <cstdio> #include &l ...
- POJ 1322 Chocolate(母函数)
题目链接:http://poj.org/problem?id=1322 题意: 思路: double C[N][N]; void init() { C[0][0]=1; int i,j; for(i= ...
- Scout YYF I POJ - 3744(概率dp)
Description YYF is a couragous scout. Now he is on a dangerous mission which is to penetrate into th ...
- POJ - 2151 (概率dp)
题意:有T个队伍,有M道题,要求每个队至少有一道题,并且有队伍至少过N道题的概率. 这个题解主要讲一下,后面的,至少有一道题解决和至少一道题至N-1道题解决,到底怎么算的,其实,很简单,就是母函数. ...
- poj 3071 Football (概率DP水题)
G - Football Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- POJ 1202 Family 概率,DP,高精 难度:2
http://poj.org/problem?id=1202 难度集中在输出格式上,因为输出格式所以是高精度 递推式: 血缘肯定只有从双亲传到儿子的,所以,设f,m为双亲,son为儿子,p[i][j] ...
- poj 3071 Football(概率dp)
id=3071">http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率 ...
随机推荐
- SQL SERVER发布与订阅
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
- iOS 开发,工程中混合使用 ARC 和非ARC(转)
[前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...
- UML类图关系(转,添加了实例)
UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Associati ...
- itchat+pillow实现微信好友头像爬取和拼接
源码下载链接:https://pan.baidu.com/s/1cPZhwy 密码:2t2o ###效果图 使用方法: 下载项目到本地,打开项目主目录,打开命令行,输入: pip install -r ...
- javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed
1.使用HttpClient4.3 调用https出现如下错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.Validat ...
- mkubimage-mlc2: error while loading shared libraries: liblzo2.so.2: cannot open shared object file: No such file or directory
mkubimage-mlc2: error while loading shared libraries: liblzo2.so.2: cannot open shared object file: ...
- Ansible的快速入门
Ansible 是一个简单的自动化引擎,可完成配置管理,应用部署,服务编排等各种IT需求. Ansible使用python语言开发实现的开源软件,依赖于Jinjia2,paramiko和PyYAML这 ...
- [Python] io 模块之 open() 方法
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) 打开file ...
- List 集合的N层遍历
package com.j1.cms.model; import java.io.Serializable; import java.util.List; /** * Created by wangc ...
- Linux centos 下 eclipse 打开文件时关闭
原文地址:http://processors.wiki.ti.com/index.php/Linux_Host_Support#cairo-misc.c:380:_cairo_operator_bou ...