摘要:
用一把宽度为n的指甲钳,去剪宽度为m的指甲,指甲钳可以正反面使用。用最少的次数剪完指甲。月赛的时候,我大致觉得是状态压缩,可是没有想到比较快的方法。大约50来分钟的时候,cl123神奇地1Y了……赛后看了下人家代码,貌似是一个贪心,但他的代码实际是错的……比如10*.******.*6人家的程序输出的是2,正解是1……今天上课的时候又想了下,状态压缩的确是可以做的。首先把 (1<<m)-1 作为指甲没剪时的初态(全是1),dp[x]保存的就是对于每个状态,需要剪的最少次数。当前状态x以二进制表示时,出现的1表示这一位置还留有指甲,0就是已剪去。而对于指甲钳,又可以将其以二进制表示, 阅读全文