随笔分类 -  基础算法 - 倍增

摘要:题目大意:给定一棵 N 个节点的树,点有点权,要求回答 M 个询问,每次询问点 u 到点 v 的简单路径(链)上权值第 K 小是多少。 题解:学习到了树上主席树。 主席树维护序列时,每次将后一个点的树建立在前一个点的树上,由此构成一个前缀和,并利用可以在线段树上二分的性质来求 K 小值。树上主席树维 阅读全文
posted @ 2019-03-04 09:26 shellpicker 阅读(248) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N 个顶点的邻接矩阵、起点顶点、终点顶点,求至少经过 K 条边(边可以重复)从起点到终点的最短路长度,若不能到达,输出 1。 题解:至少经过 K 条边和恰好经过 K 条边的初始条件不同,因为至少经过 1 条边的任意两点最短路就是通过 Floyd 算法算出的矩阵,而恰好经过 K 条 阅读全文
posted @ 2018-11-19 22:50 shellpicker 阅读(549) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N 个顶点,M 条边的无向图,求从起点到终点恰好经过 K 个点的最短路。 题解:设 $d[1][i][j]$ 表示恰好经过一条边 i,j 两点的最短路,那么有 $d[r+m][i][j]=min\{d[r][i][k]+d[m][k][j] \}$,等价于矩阵乘法。 这道题 K 阅读全文
posted @ 2018-11-18 21:31 shellpicker 阅读(162) 评论(0) 推荐(0)
摘要:题目:给定一个序列a[ ],共 N 个正数,现有 M 次询问,每次给出一个 T ,需要求出最大的 k ,满足$\Sigma_{i=1}^ka[i] using namespace std; const int maxn=1e5+10; int sum[maxn],n,m; int main(){ s 阅读全文
posted @ 2018-10-24 12:17 shellpicker 阅读(315) 评论(0) 推荐(0)