序列 序列是Python中最基本的数据结构,包括字符串、列表、元组。 序列,顾名思义,是有序的,序列都有索引,都能进行索引、切片(截取)、加(连接)、乘(倍增)、检查成员的操作。 因为序列有序,可通过位置来区分元素,所以序列中可含有相同的元素。 序列的通用操作 1、索引 seq[index] ind ...
分类:
编程语言 时间:
2019-08-03 01:09:14
阅读次数:
115
LCA_Tarjan 参考博客:https://www.cnblogs.com/JVxie/p/4854719.html LCA的Tarjan写法需要结合并查集 从叶子节点往上并 LCA_倍增 参考博客:https://www.cnblogs.com/zhouzhendong/p/7256007.h ...
分类:
其他好文 时间:
2019-08-03 01:03:35
阅读次数:
108
"题目链接" 题意:给出一张无向连通图,求S到E经过N条边的最短路。 数据范围:边数$\le 100$,顶点编号$\le1000$,$N\le1 \times 10^6$ 题解: 最短路有三种解法,这种数据范围可使用$floyd$ 可以用$f[i][j][k]$表示从$i$到$j$经过$k$条边的最 ...
分类:
其他好文 时间:
2019-08-02 10:32:17
阅读次数:
75
这个有两种方法: 一、倍增 就是维护一个节点的第$2^0,\ 2^1,\ 2^2\ ...$层父亲,这样的话我们在后面查询的时候就可以直接“跳”着找。 第二行相当于将$dep(x) dep(y)$的值做 二进制拆分 。 跳到同一深度之后,如果两个节点已经跳到同一个位置,就直接退出。 否则,就要继续 ...
分类:
编程语言 时间:
2019-08-01 16:01:55
阅读次数:
101
http://acm.hdu.edu.cn/showproblem.php?pid=6604 很裸的支配树/灭绝树题 一般图的tarjan算法的话,先建立,反向图,然后建立一个超级源点,然后连到几个起点,跑支配树就行 可惜太慢...过不去 所以用针对DAG的拓扑排序+倍增做法,就能1000ms以下a ...
分类:
其他好文 时间:
2019-08-01 14:33:51
阅读次数:
231
LCA倍增法 模板:luogo P3379 【模板】最近公共祖先(LCA) 今天讲的时候有点跑神,现在卑微地来补习(菜) LCA指的是最近公共祖先(Least Common Ancestors)。 最简单的算法无疑是从两个点一个个往上走,出现的第一个两个点都走过的点即为两点的LCA。 但是时间很长。 ...
分类:
其他好文 时间:
2019-07-31 23:38:45
阅读次数:
110
题目链接:https://www.luogu.org/problem/P3379 题目大意: 给一棵以s为根的无向树,回答m个询问,回答出a和b最近的公共祖先。 解题报告: 倍增LCA的模板题,用一个数组 f [i] [j]表示i结点的第$2^{j}$个祖先。显然,一个点的祖先是f[i][0],对于 ...
分类:
其他好文 时间:
2019-07-30 12:53:08
阅读次数:
69
Luogu Description Sol 1.发现对于每个城市,小A和小B的选择是固定的,可以预处理出来,分别记为ga[],gb[] 2.并且,只要知道了出发城市和出发天数,那么当前城市和小A,小B各行驶的路程也是一定的,同样可以分别预处理出来 具体怎么预处理: 1.其实就是"邻值查找" 简单讲一 ...
分类:
其他好文 时间:
2019-07-29 09:57:13
阅读次数:
77
AHOI2008 紧急集合 "题目传送" sol: 如果只有两个点,那么显然目的地就是在他们二者路径上的任意一点。 现在有三个点,考虑两两的路径和lca,发现肯定有两对求得的lca相同,另外一对的lca深度比那两对的lca深度大。 这个深度大一些的那个lca就是目的地(最近点),最小距离就是三者两两 ...
分类:
其他好文 时间:
2019-07-26 22:51:28
阅读次数:
106
题意:给定一个N个节点的树,1<=N<=50000 每个节点都有一个权值,代表商品在这个节点的价格。商人从某个节点a移动到节点b,且只能购买并出售一次商品,问最多可以产生多大的利润。 思路:路径压缩,得到每个点到当前根的信息,然后更新即可。 有可以用倍增做。 很久前抄的代码。 ...
分类:
其他好文 时间:
2019-07-24 13:19:19
阅读次数:
77