关于noip的问题
第一个问题真的是水...由于A和B不大于Max Longint (Max Longint = 265,438+过亿),所以可以直接输入A和B,做减法。
第二个问题其实就是输入n,这样就可以算出(2 n-1)% 10000是什么了。因为N=maxlongint,如果直接计算,O(N)会超时,所以采用分治算法,思路很简单,就是:
2 n = (2 n/2) * (2 n/2)。这样一次就能算出2 n/2,第二次相乘就不用再算了。复杂度O(logN),非常快。至于%10000,每次算起来,%10000就够了。
第三个问题是经典的配对动态规范f(i,J),代表A序列第一个I和B序列第一个J配对产生的最小恶心。所以:
F(i,j)=f(i-1,j-1)+abs(v[i]-v[j])(选择)或f(i-1,j)(不选择)。
其中较小的一个。因为j比较小,所以错过的时候不能选择错过的第二序列。
第四个问题是记忆广泛搜索。每找到一个点,如果我现在的消费比它短,我就把我的最低消费值更新到这个点。队列清空后,输出相应的值即可。注意,这个问题不能用动态编程,因为有故意绕道。
第五个问题应该是树形数组。我真的做不到。我们来模拟30分。