![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
倍增
HT008_123
家人们点点关注叭
展开
-
P1613 跑路
传送门 刚开始眼瞎,看成了跑2^k米。。。。。。。 智障的我:这不就是个最短路吗……. 忽然发现:你这不是放屁吗,如果正好公司和家差4千米,这样1秒就跑完了。。。。。 这可咋办呢 正解 : DP+倍增(心情复杂) f[i][j][k]表示j,k的距离是2^i次方,那么这两个点便可以1秒到达 问题是咋求呢 如果f[i-1][j][k]与f[i-1][k][v]都为真,那么f[i][j]原创 2017-08-16 20:16:53 · 338 阅读 · 0 评论 -
轮换+区间+收集果子
理解了题意就很容易模拟了。 从后向前,然后括号里面的不是位置,而是数。#include <cstdio> #include <iostream> #include <vector> using namespace std; int w[99999]; int z[1001][1001]; int w2[99999]; int main() { freopen("rotate.in","r"原创 2017-11-03 17:12:36 · 292 阅读 · 0 评论 -
[SCOI 2016] 萌萌哒
题目描述: 语死早. 题目分析: 如果没有限制 那么答案就是 9∗10n−19∗10n−19*10^{n-1} 现在加入了限制 l1-r1 == l2-r2 可以发现相等的两个区间中互相对应的位置是联系在一起的,也就是说,确定了一个就可以确定另外一个。所以可以考虑把这样的点合并起来。 用并查集维护合并关系 重复的合并过多,利用倍增进行合并 f[i][j] 表示 [i−>2...原创 2018-03-11 09:13:07 · 160 阅读 · 0 评论 -
[SDOI2013] 森林
题目描述: 给出一个森林 求 1 : u -> v 路径上的第K小值 2:u v 合并 u v 所在树 题目分析: 合并?LCT? LCT没法维护第K值啊(雾 动态维护第K值肯定是要用主席树的 在树上建立主席树,我们新的节点继承父亲树信息 查询的时候求LCA,然后消除影响 合并的话我们就搞一下启发式合并qwq O(Q∗logn2)O(Q∗logn2)O(Q*logn...原创 2018-03-30 08:43:43 · 209 阅读 · 0 评论 -
[Scoi 2016] 幸运数字
题目描述: 给出一棵树 树上有 N 个点 每个点有一个权值 C 给出 M 个 询问 问从 u->lca(u,v)->v 路径上任取任意数量的权值Xor最大是多少? 题目分析: 对于任取 数字 使其 Xor和最大的问题,是由线性基来解决的 我们可以把路径上的点值插入到一个线性基中,进行查询 暴力插入肯定是不行的 考虑倍增优化 每次我们只需要合并两个链的线性基即可 倍...原创 2018-03-31 08:37:52 · 189 阅读 · 0 评论 -
[JLOI2012] 树
题目描述: 雾。 题目分析: DFS暴力找的话就有90了,雾 过不去的10分是链 考虑用倍增优化一下 题目链接: Luogu 3252 BZOJ 2783 Ac 代码: #include <cstdio> #include <iostream> const int maxm=1e5+100; int fa[maxm][18],sum[ma...原创 2018-04-01 08:02:22 · 172 阅读 · 0 评论