(资料图片仅供参考)
对角线上的质数
【遍历】遍历两条对角线,用埃式筛判断。
等值距离和
【前缀和】将相同元素下标分组,对于每个组a,设a[i-1]到其他元素的距离之和为sm,那么a[i]到其他元素的距离之和为sm + (2*i - n) · (a[i] - a[i -1])。
最小化数对的最大差值
【贪心 + 二分】排序后,为了让差值最小,尽量选相邻的元素,二分数对中的最大差值mx。
网格图中最少访问的格子数
【优先队列】只向右和向下走,可以不用bfs,直接二重循环。在位置(i,j)时,考虑上一步是向下还是向右走,如果上一步是向下走,那上一个位置应该是(i',j),需要满足i'<i,(i',i)要能走到(i,j),到(i',j)的移动次数要最小。可以用优先队列维护所有i',堆顶为移动次数最少的位置,在获取堆顶时进行判断,如果堆顶的i'不满足要求,就可用将它永久从优先队列中移除(因为之后共享同一列j的位置i只会更大,走不到)。因此可以对每一列都维护一个优先队列,第j个优先队列存储所有位于第j列的位置,优先队列中存两个值,第一个是到达(i',j)最少的移动次数,第二个值为i'。对每一行也维护一个优先队列用于处理向右走的情况。