排队打水问题

Python023

排队打水问题,第1张

Sample Input

3 2

1 2 3

Sample Output

7

3个人,2个水龙头,3个人打水时间分别为1、2、3,那么最少时间应该是3分钟才对,怎么会是7分钟呢?

每个盒子可以放几个,也可以不放。

设n个盒子的编号为1,2,...,n.各自中放x1,x2,...,xn。

x1,x2,。。。xn>=0

则x1+x2+...+xn=r

令y1=x1+1,y2=x2+1,....yn=xn+1

y1,y2..,yn>=1

则y1+y2+..+yn=r+n

对于每一个xi,都只有一个yi

原题相当于是求x1,x2,..xn的正数解组数。

由于一一对应,

即相当于求y1,y2...,yn的正数解组数。

y1+y2+....+yn=r+n,y1,y2..,yn>=1

相当于有r+n个球排成一排,现在用n-1个隔板插到r+n-1个缝里(插板法)

每两个隔板间球的个数就是yi中的某一个。

即是问有多少种插法

即从r+n-1中选n-1个放n-1个隔板。

C(n-1, n+r-1)=C(r,n+r-1)

排队问题是指一些人排成一行或一列,以其中一人或几人作观察点,求出总人数或前后各有几人的问题。解决这类问题要注意:对于作为观察点的人不能重复加也不要遗漏。

第一题  第一小队的同学排成一列。小明的前面有5人,小明的后面有4人,第一小队一共有多少人?

[解析]解决这类问题最好是用示意图。(如下图,Δ代表小明,●代表这一小队的其他同学)

从图中可以看出,“小明的前面有5人,小明的后面有4人”前后合起来一共有5+4=9(人),在这9人当中没有小明,加上小明本人,第一小队一共有9 + 1 = 10(人)算式是:5+4+1=10(人)答:第一小队一共有10人。

第二题   同学们站成一行,从左往右数小林站在第6个,从右往左教小林站在第8个。这一行一共有多少个同学?

[解析]画出示意图。(△代表小林 ,●代表其他同学)

从图中我们可以看出,“从左往右数小林站在第6个”说明从左往右数出的6个同学当中包括小林,“从右往左数小林站在第8个”说明从右往

左数出的8个同学当中也包括小林。

如果我们把两次数出的结果合起来,就会有两个小林,也就是说小林被多加了一次。因此,要从合起来的结果中减去1个小林。所以这一行中

有6+8-1= 13(个)同学。

算式是:6+8-1= 13(个)

答:这一行一共有13个同学。

第三题   有12个同学在站队,小江的前面有5个同学,小江的后面有多个同学?(小江用Δ表示,其他同学用表示◎)

[解析]从总人数12个同学中去掉排在小江前面的5个同学,剩下的7个同学中除了小江后面的同学还包括小江。因此还要从剩下的7个同学中去掉小江1人,就能得到排在小江后面的人数是7一1=6(个)。算式:12-5- 1 = 6(个)答:小江的后面有6个同学。

第四题    学校舞蹈队排练舞蹈,15个人站一排。从左往右数,芳芳排第4个,从右往左数,甜甜排在第6个。请问芳芳和甜甜之间有几个人?

[解析]画出示意图。 (△代表芳芳,●代表甜甜,心形代表其他队员。

从图中可以看出,“从左往右数,芳芳排在第4个”说明:从左边第一个开始数到芳芳一共是4个人“从右往左数,甜甜排在第6个”说明:从右边第一个开始数到甜甜一共是6个人。把这两部分合起来一共是4+6=

10(个)。从15个人中去掉这10个人,剩下的就是芳芳和甜甜之间的人数了。算式:15-(4 + 6)=5(个)答:芳芳和甜甜之间有5个人。