首页 > 其他分享 >POJ-1322 Chocolate(概率DP)

POJ-1322 Chocolate(概率DP)

时间:2022-10-18 14:04:56浏览次数:53  
标签:1322 1.0 chocolates ACM colors POJ DP dp 1000

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;



标签:1322,1.0,chocolates,ACM,colors,POJ,DP,dp,1000
From: https://blog.51cto.com/u_15834522/5766277

相关文章

  • POJ-1276-Cash Machine(多重背包)
    CashMachineTimeLimit:1000MSMemoryLimit:10000KTotalSubmissions:30568Accepted:11018DescriptionABankplanstoinstallamachineforca......
  • STTH1506DPI意法车规MOS管\原装现货\ASEMI代理
    编辑:llSTTH1506DPI意法车规MOS管\原装现货\ASEMI代理型号:STTH1506DPI品牌:ASEMI封装:TO-3P-2L最大漏源电流:15A漏源击穿电压:600VRDS(ON)Max:0.24Ω引脚数量:2沟道类型:N沟......
  • STTH1506DPI意法车规MOS管\原装现货\ASEMI代理
    编辑:llSTTH1506DPI意法车规MOS管\原装现货\ASEMI代理型号:STTH1506DPI品牌:ASEMI封装:TO-3P-2L最大漏源电流:15A漏源击穿电压:600VRDS(ON)Max:0.24Ω引脚数量:2沟道类型:N沟道MOS管芯......
  • 16.SharedPreferences存储
    1、SharedPreferences存储不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的,保存为.xml文件。也就是说当保存一条数据的时候,需要给这条数据提供一个......
  • WordPress自定义仪表盘
    •介绍本文介绍如果自定义一个仪表盘。[codesyntaxlang="php"]add_action('wp_dashboard_setup','suren_welcome_panel');functionsuren_welcome_panel(){wp_......
  • WordPress自定义字段
    介绍本文介绍如何添加、使用WordPress文章中的自定义字段。玉照[captionid="attachment_3482"align="aligncenter"width="923"]​​​​WordPress文章自定义字段[/capt......
  • WordPress给附件添加属性
    •介绍WordPress的附件(多媒体)默认已经有一些对应的属性了,我们还可以再添加一些信息。•玉照[captionid="attachment_3523"align="aligncenter"width="399"]​​​​w......
  • WordPress在插件管理页面添加超链接
    •介绍如果你创建了一个插件,WordPress的插件管理页面中就可以看到,而且会有启用、停用、编辑等默认的超级链接按钮。那么,怎么才能添加一个自定义的呢?•玉照[captionid="a......
  • WordPress修订版本
    介绍WordPress会自动维护文章(post)的修订版本,就类似SVN这样的版本管理功能,这本来是一件很惊艳的事情。可是,默认情况下修订版本的数量是没有限制的,这样会导致数据库中有大量无......
  • win11扯蛋的防火墙:远程桌面默认只添加了UDP端口规则
    win11扯蛋的防火墙:远程桌面默认只添加了UDP端口规则。开启防火墙后,导致win10以下的mstsc客户端无法访问。解决办法就是在防火墙高级设置,添加远程桌面端口(默认3389)的TCP......