码迷,mamicode.com
首页 > 其他好文 > 详细

组合计数中的隔板法 HDU 1410 PK武林盟主

时间:2015-02-28 14:39:00      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:数学

在排列组合中,对于将不可分辨的球装入到可以分辨的盒子中而求装入方法数的问题,常用隔板法。隔板法在排列组合中的应用技巧

1.求方程技术分享的正整数解的个数。

[分析]

10个球排成一排,球与球之间形成9个空隙,将两个隔板插入这些空隙中(每空至多插一块隔板),规定由隔板分成的左、中、右三部分的球数分别为xyz之值(如下图)。则隔法与解的个数之间建立了一一对立关系,故解的个数为技术分享(个)。实际运用隔板法解题时,在确定球数、如何插隔板等问题上形成了一些技巧。下面举例说明。

技巧一:添加球数用隔板法。

技术分享

2.求方程技术分享的非负整数解的个数。

[分析]

注意到xyz可以为零,故上题解法中的限定“每空至多插一块隔板”就不成立了,怎么办呢?只要添加三个球,给xyz各一个球。这样原问题就转化为求技术分享的正整数解的个数了,故解的个数为技术分享(个)。

[点评]

本例通过添加球数,将问题转化为如例1中的典型隔板法问题。

技巧二:减少球数用隔板法:

3.20个相同的小球放入编号分别为1234的四个盒子中,要求每个盒子中的球数不少于它的编号数,求放法总数。

解法1:先在编号1234的四个盒子内分别放0123个球,剩下14个球,有1种方法;再把剩下的球分成4组,每组至少1个,由例1知方法有技术分享(种)。

解法2:第一步先在编号1234的四个盒子内分别放1234个球,剩下10个球,有1种方法;第二步把剩下的10个相同的球放入编号为1234的盒子里,由例2知方法有技术分享(种)。

[点评]

两种解法均通过减少球数将问题转化为例1、例2中的典型问题。

技巧三:先后插入用隔板法。

4.为宣传党的十六大会议精神,一文艺团体下基层宣传演出,准备的节目表中原有4个歌舞节目,如果保持这些节目的相对顺序不变,拟再添两个小品节目,则不同的排列方法有多少种?

[分析]

记两个小品节目分别为AB。先排A节目。根据A节目前后的歌舞节目数目考虑方法数,相当于把4个球分成两堆,由例2知有技术分享种方法。这一步完成后就有5个节目了。再考虑需加入的B节目前后的节目数,同理知有技术分享种方法。故由分步计数原理知,方法共有技术分享(种)。

[点评]

对本题所需插入的两个隔板采取先后依次插入的方法,使问题得到巧妙解决。


HDU1410

公式推导: 
设: 
枫之羽为x,氢氧化铜为y 
x需要打n次才能打败y 
y需要打k次才能打败x 
一个回合中,x打y的概率 = y打x的概率 = 0.5 
要x赢,则x必须打n次,而y可以打0次,1次,2次……k-1次,而且最后一次当然必须是x打的,所以(设y打i次),那么一共打n+i次,要在前n+i-1次选i次让x被y打 


所以x赢的概率 = 
C(n+0-1,0)*0.5^n + C(n+1-1,1)*0.5^(n+1) + …… + C(n+i-1,i)*0.5^(n+i)…… 

技术分享

组合数过大,于是用取对数方法

<span style="font-size:12px;">#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define L __int64
#define M 1005
#define inf 0x3fffffff
int main() {
	int h1, h2, a1, a2, n, k, i;
	double c, res;
	while (~scanf ("%d%d%d%d", &h1, &h2, &a1, &a2))
	{
		n = (h2 + a1 - 1) / a1;
		k = (h1 + a2 - 1) / a2;
		res = pow (0.5, n);
		c = 0;
		for (i = 1; i < k; i++)
		{
			c = c + log10 (n+i-1.0) - log10 (i+0.0);
			res += pow (10.0, c + (n+i)*log10(0.5));
		}
		printf ("%.4f\n", res*100);
	}
    return 0;
}</span>


组合计数中的隔板法 HDU 1410 PK武林盟主

标签:数学

原文地址:http://blog.csdn.net/gg_gogoing/article/details/43984869

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!