新闻  |   论坛  |   博客  |   在线研讨会
无菌手套 (answer)
shadowind | 2008-07-25 20:37:41    阅读:657   发布文章

呵呵,想起来了。用{m/2}+{n/2}+{n/4}(m<=n)即可。
{}表示向上取整。

为了叙述方便,假设m是2的倍数,n是4的倍数,不是4的倍数时
类似,只是手套的“利用率”没有那么高。可能可以通过
优化减少一副到两副。没有细想。

1. 将医生平均分为两组,分别为A, B。各m/2人;
   将病人分为三组,人数分别为a=n/2, b=n/4, c=n/4

2. 将m/2副手套分配给A, 
   n/2副手套分配给a, 
   A中的每一个医生检查a中的每一个病人;
   检查前均在自己的手套外套上指定给该病人的手套;
   注意所有的手套均只有一面污染。(假设医生之间也要防止相互感染)

3. 将分配给a的n/2副手套中的一半翻转,两两一组套在一起,
   污染面互相接触,
   此时每一组手套内外均无污染;
   将这n/4组手套分配给b(n/4人);
   将剩下的未使用过的n/4只手套分配给c (n/4人);

4. A中的每一位医生分别检查b,c中的病人,检查前均在自己
   的手套外套上指定给该病人的手套(或两只套在一起的手套);
   这样A中的医生完成对所有病人的检查,而且医生的手套外侧
   和指定给病人的手套内侧(注意有n/4是翻转过的)均无污染。

5. A中所有的医生将各自的手套翻转后给B中的医生戴上;
   b中的病人把套在一起的手套里面的那只抽出来翻转后套入c组
   病人的手套中。此时c组的手套每一组相互接触的面都是干净的;

6. B中所有的医生按前述方法给b,c两组病人检查;

7. 将c组的手套两两分开,把套在外面的手套翻转,这样得到n/2
   只外侧干净的手套重新分配给a组的病人。

8. B中的所有医生检查a组的病人。

这样就完成了所有医生对病人的检查。
不知道有没有利用率更高的方法。   

如果医生的数量比病人多只要把医生和病人交换即可。
在该问题中二者是对称的。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客