摘要:
数论 倍数问题 倍数问题一般都会想到取模。这里要找三个数的和是K的倍数,直接暴力肯定超时。注意到K的范围,最大取到1e3,可以用O(n^2)的算法。 要使得相加为K的倍数,只需要余数相加为K的倍数,所以可以预处理一下所有数模K的余数,因为题目问的是最大的和,所以要计算出K以内的余数对应的最大值,即m 阅读全文
摘要:
数据结构 最长不下降子序列 设输入的序列为arr。 考虑将长度为K的区间[l, r] 变为相同值,应该变成什么值比较好呢?不是很好考虑。 换一种视角,我们最终的最长不下降子序列应该包含三段,中间那一段是长度为K的区间,两边应该是由DP得来的。用dp1[i]表示以i结尾的最长不下降子序列长度,用dp2 阅读全文
摘要:
区间问题 青蛙过河 因为如果跳跃能力越强,就越有可能完成2x次来回,如果跳跃能力越弱,就越不可能完成2x次来回。因此首先马上可以想到二分。 难的是check函数。首先想一个必要条件,如果check(y)返回True,那么对于所有以i开始长度为y的区间,区间中所有数之和必然不少于2x。可以想象,因为最 阅读全文