边带权
银河英雄传说
有 TT 条指令,每条指令格式为以下两种之一:
M−i−jM−i−j,表示让第 ii 号战舰所在列的全部战舰保持原有顺序,接在第 jj 号战舰所在列的尾部。
RMQ(Range Minimum/Maximum Query),区间最值查询问题,是指:对于长度为 nn 的数列A,回答若干次询问 RMQ(i,j)RMQ(i,j),返回数列A中下标在区间 [i,j][i,j] 中的最小/大值。
这里介绍Tarjan的Sparse-Table算法,预处理时间为 O(nlogn)O(nlogn),但查询只需要 O(1)O(1),并且常数很小,算法也很容易写出。
1)预处理:
设 A[i]A[i] 是要求区间最值的数列,d[i,j]d[i,j] 表示从第i个数起连续 2j2j 个数中的最小值。(DP的状态)
给定一个无向、连通的树。树中有 NN 个标记为 0…N−10…N−1 的节点以及 N−1N−1 条边 。
第 ii 条边连接节点 edges[i][0]edges[i][0] 和 edges[i][1]edges[i][1] 。
返回一个表示节点 ii 与其他所有节点距离之和的列表 resres。
最少修改几个数,使得数列满足 a[i+1]−a[i]=ia[i+1]−a[i]=i。(n∈[1,1e5],a[i]∈[−1e9,1e9])(n∈[1,1e5],a[i]∈[−1e9,1e9])
先构造一个长度为 nn 满足题意的初始数列,然后将所给的数减去对应的初始构造的数,差值出现的次数最多的就是最长的满足题意的序列,要修改的就是剩余的那些数。
从给定数列中能选出组成的最长等差数列长度为多少?(n∈[1,5000],a[i]∈[1,1e9])(n∈[1,5000],a[i]∈[1,1e9])
dp[i][j]dp[i][j] 表示 a[i]a[i] 为等差数列最后一个数,a[j]a[j] 为倒数第二个数。
最多可以把数组分成几个部分,使得每部分中位数都大于等于mm。(n,m,a[i]∈[1,5000])(n,m,a[i]∈[1,5000])
思维题,可以发现答案就是大于等于 mm 的个数减去小于 mm 的个数。
Update your browser to view this website correctly.&npsb;Update my browser now