明明会的题,却因为手抖,太慌张,多了很多的罚时,要不然又能大涨一波了....
修改一个数的某一位,使得它变成7的倍数。首先的想法就是减去余数,但这样的话,可能个位上的数字不足,这样的话会导致借位的情况,所以还有一个情况就是加上7-余数,补足这个余数。考虑第一种情况会出现特例的情况,个位为x(0-9),余数为d(0-6),x<d,则x+7-d,可以发现,d最大是6,x最小是0,这样的话结果为1,还有由于x<d的缘故,x-d一定是负数,所以x+7-d<7,一定符合条件。所有直接考虑这两种情况即可。
B题要求选定一个区间,使得这个区间内0/1的个数严格小的个数足够大。
直接说结论:若整个序列的0/1个数不相等的话,答案为整个区间。这个很显然,因为任何一个区间的严格小的个数都不可能大于这个区间严格小的个数。若相等的话,则答案为个数-1.这个也很好证,就是我们将第一个字符去掉即可。
直接枚举即可。
比较显然的DP吧。我们可以预处理出使每一位有价值的最少的操作次数。之后直接做背包就行。