摘要: 给定两个数n和k,接下来给出n个数的数列。每次维护一个长度为k的窗口,求出这个范围的最大值和最小值。每次向右移动一个单位。 考虑如何得出一个区间的最大值,每次增加一个数,如果这个数比当前的最大值小,如何是可以不用维护的。如果比当前值大,那么就要考虑。但是当这个最大值在最左边的时候,它下一次就不能在这 阅读全文
posted @ 2018-04-28 19:46 chagin 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 给定M个长度为N的序列,从每个序列中任取一个数求和,可以构成NM个和。求其中最小的N个和。 先考虑M=2的一般情形,从2个序列中任取一个数构成的N2个和中求出前N小的和。 设两个数列A,B,把他们都排序。可以知道最小的一定是A[0]+B[0],次小和是min(A[0]+B[1],A[1]+B[0]) 阅读全文
posted @ 2018-04-28 15:33 chagin 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 给定一颗N个节点的树,树上的每条边都有一个权值。从树中选择两个点x和y,把x到y的路径上的所有边权xor起来,得到的结果最大是多少? 我们知道x到y的最短路是d[x]+d[y]-2*d[rt],其中rt是最近公共祖先的点。同样我们可以对树进行一次DFS,求出所有d[x]表示根到x的xor值。与最短路 阅读全文
posted @ 2018-04-28 13:21 chagin 阅读(100) 评论(0) 推荐(0) 编辑