hdu1205 吃糖果解题思路

仔细想想其实不那么难的

把最多的那种 M(共计max个) 摆成一列,产生max-1个间隔,对于M来说,其他的糖果都是异类 (共计 sum-max个),可以用来填充间隔,但是如果sum-max<max-1的话,间隔不能被填满,所以会有相邻的M,不符合要求 printf("No\n");

当sum-max>=max-1时,M的间隔一定能被填满  printf("Yes\n");

注意sum数值较大

 

在异类中任选一种糖果N (N<=sum-max) 填进间隔 ,之后M与N合并代替之前的M。

循环上一步直至结束

MMMMM    NNNN   BBBB   VVV   CC   X

 

 

从箭头处开始插入

   ↓

M  M  M  M  M    

                                   ↓

MN  MN  MN  MN  M

                                   ↓

MNB  MNB  MNB  MN  MB

                    ↓

MNBV  MNB  MNB  MNV  MBV

                                              ↓

MNBV  MNBC  MNBC  MNV  MBV

                              

MNBV  MNBC  MNBC  MNVX  MBV

你可能感兴趣的:(hdu1205 吃糖果解题思路)