题目链接:http://poj.org/problem?id=1322

题意:

思路:

  1. double C[N][N];
  2.  
  3. void init()
  4. {
  5. C[0][0]=1;
  6. int i,j;
  7. for(i=1;i<N;i++)
  8. {
  9. C[i][0]=C[i][i]=1;
  10. for(j=1;j<i;j++) C[i][j]=C[i-1][j-1]+C[i-1][j];
  11. }
  12. }
  13.  
  14. double Pow(double a,int b)
  15. {
  16. double ans=1;
  17. while(b)
  18. {
  19. if(b&1) ans*=a;
  20. a=a*a;
  21. b>>=1;
  22. }
  23. return ans;
  24. }
  25.  
  26. int n,m,c;
  27.  
  28. double cal()
  29. {
  30. double positive[N],negative[N],a[N],b[N];
  31. double temp1,temp2;
  32. int i,j,k;
  33. for(i=0;i<=c;i++) positive[i]=negative[i]=a[i]=b[i]=0;
  34. temp1=Pow(0.5,m);
  35. for(i=0;i<=m;i++)
  36. {
  37. j=i-(m-i);
  38. if((m-i)&1) temp2=-temp1;
  39. else temp2=temp1;
  40. if(j>=0) a[j]+=temp2*C[m][i];
  41. else b[-j]+=temp2*C[m][i];
  42. }
  43. temp1=Pow(0.5,c-m);
  44. for(i=0;i<=c-m;i++)
  45. {
  46. temp2=temp1*C[c-m][i];
  47. for(j=0;j<=m;j++)
  48. {
  49. k=j+i-(c-m-i);
  50. if(k>=0) positive[k]+=temp2*a[j];
  51. else negative[-k]+=temp2*a[j];
  52. }
  53. for(j=0;j<=m;j++)
  54. {
  55. k=-j+i-(c-m-i);
  56. if(k>=0) positive[k]+=temp2*b[j];
  57. else negative[-k]+=temp2*b[j];
  58. }
  59. }
  60. double ans=0;
  61. for(k=1;k<=c;k++)
  62. {
  63. if(n&1) negative[k]=-negative[k];
  64. ans+=C[c][m]*Pow(1.0*k/c,n)*(positive[k]+negative[k]);
  65. }
  66. return ans;
  67. }
  68.  
  69. int main()
  70. {
  71. init();
  72. Rush(c)
  73. {
  74. if(!c) break;
  75. RD(n,m);
  76. if((n-m)%2||m>c||m>n) puts("0.000");
  77. else if(n==0&&m==0) puts("1.000");
  78. else PR(cal());
  79. }
  80. }

  

POJ 1322 Chocolate(母函数)的更多相关文章

  1. POJ 1322 Chocolate

    Chocolate Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8245   Accepted: 2186   Speci ...

  2. poj 1322 Chocolate (概率dp)

    ///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...

  3. Solution -「ACM-ICPC BJ 2002」「POJ 1322」Chocolate

    \(\mathcal{Description}\)   Link.   \(c\) 种口味的的巧克力,每种个数无限.每次取出一个,取 \(n\) 次,求恰有 \(m\) 个口味出现奇数次的概率. \( ...

  4. 经典DP 二维换一维

    HDU 1024  Max Sum Plus Plus // dp[i][j] = max(dp[i][j-1], dp[i-1][t]) + num[j] // pre[j-1] 存放dp[i-1] ...

  5. 专题:DP杂题1

    A POJ 1018 Communication System B POJ 1050 To the Max C POJ 1083 Moving Tables D POJ 1125 Stockbroke ...

  6. poj 动态规划题目列表及总结

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  7. poj动态规划列表

    [1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...

  8. POJ 动态规划题目列表

    ]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...

  9. poj 动态规划的主题列表和总结

    此文转载别人,希望自己可以做完这些题目. 1.POJ动态规划题目列表 easy:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, ...

随机推荐

  1. 【IDA*】codevs 2495:水叮当的舞步

    2495 水叮当的舞步 题目描述 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变. 为了讨好她的偶像虹猫,水叮当决定在地毯上 ...

  2. Understanding Convolution in Deep Learning

    Understanding Convolution in Deep Learning Convolution is probably the most important concept in dee ...

  3. [百度空间] [转]DLL地狱及其解决方案

    DLL地狱及其解决方案 原作者:Ivan S Zapreev 译者:陆其明概要 本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题.首先我会列出自己的研究结果,其中包括其它一些研 ...

  4. [工作积累] Android system dialog with native callback

    JNI: invoke java dialog with native callback: store native function address in java, and invoke nati ...

  5. nginx 多站点配置方法集合(转)

    关于nginx的多站设置,其实和apache很相似,假设我们已经有两个域名,分别是:www.websuitA.com和www.websuitB.com.并且这两个域名已经映射给了IP为192.168. ...

  6. Struct2、Hibernate3、Spring3框架搭建实战(转)

    采用目前最新的struts-2.3.1.2.hibernate3.6.10.Final.spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-S ...

  7. 1024: [SCOI2009]生日快乐

    暴力题,N<=10,没注意到平均分,读题真是.. 我们对于一个矩形分成两块进行搜.然后求较大值. ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n ...

  8. Unity--截取屏幕任意区域

    原地址:http://blog.csdn.net/tanmengwen/article/details/8501612 void Update () { if(Input.GetKeyDown(Key ...

  9. Rake::TestTask 介绍

    Rake::TestTask 介绍 通常我们创建一个新的项目的时候,会建立一个test或者spec的文件夹来存放测试的文件,运行这些测试需要单独的命令,比如在项目目录下执行rspec .或者ruby ...

  10. POJ 2153 Rank List (map映射)

    水题,竟然花了那么多时间...主要是不知道为什么,明明在本机上编译过去了,但是用c++提交却编译错误...最后用g++提交AC 题意:给出n个学生的名字,然后给出m个测验. 每个测验给出n个学生的分数 ...