随笔分类 - (A)数据结构
摘要:题意 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5
阅读全文
摘要:题意 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node left; Node right; Node next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点
阅读全文
摘要:题意 链接:https://ac.nowcoder.com/acm/contest/2995/E来源:牛客网卡特莉正在爬树,此时她又在树梢发现了一个谜题,为了不令她分心以至于发生意外,请你帮她解决这个问题。 具体地来说,我们定义树上从u到v简单路径上所有点权中最大值与最小值的差值为这条路径的"平衡值
阅读全文
摘要:题意 https://vjudge.net/problem/CodeForces-722C 给你一个由n个非负整数组成的数列 a1 ,a2 ,...,an 。 你将要一个一个摧毁这个数列中的数。并且,现在给你一个由 1 到 n 组成的序列来告诉你每个数被摧毁的时间顺序。 每当一个元素被摧毁时,
阅读全文
摘要:题意 https://vjudge.net/problem/CodeForces-763A 一棵无根树中各个节点被染上了一种颜色c[i] 现在让你选择一个点作为根节点,使得这个根节点的所有儿子满足以该儿子节点的作为根的子树中所有点颜色均相同(不同儿子为根的子树颜色可以不同) 思路 俺的方法: 暴力水
阅读全文
摘要:题意 https://vjudge.net/problem/CodeForces-1243D 有一张完全图,n个节点 有m条边的边权为1,其余的都为0 这m条边会给你 问你这张图的最小生成树的权值 思路 很简单的思路就是将权值为0的边构成的子图缩成若干个连通块,那么答案就是连通块个数-1了。 但是,
阅读全文
摘要:题意 https://vjudge.net/problem/CodeForces-1263E 您要设计一个只有一行的打字机,这一行的长度是无限大,一开始可以认为每个字符都是空。您的打字机有一个光标只指向一个字符,一开始指向最左侧的字符。 使用者有三种操作: L 将光标向左移一格(当光标已经在最左侧时
阅读全文
摘要:题意 https://vjudge.net/problem/CodeForces-1253D 一个无向图,对于任意l,r,如果l到r有路径,那么l到m也有路径(l<m<r),问最少加多少条边,使得上述条件成立。 思路 先用并查集缩成若干个连通块,顺带把每个连通块的最大值求出来,然后我们从1到n开始遍
阅读全文
摘要:206. 反转链表(易) 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL c++: /** * Definition for singly-linked list. * struct ListNode { * int val;
阅读全文
摘要:题意 n个值代表n个熊的高度 对于size为x的group strength值为这个group(连续的几个熊)中熊的最小的height值 对于x(1 using namespace std; define inf 0x3f3f3f3f define ll long long const int N=
阅读全文
摘要:题意 求区间l,r的子串在原串中第k次出现的位置。 链接:https://vjudge.net/contest/322094 problem/C 思路 比赛的时候用后缀自动机写的,TLE到比赛结束。 学了后缀数组后,发现这题用后缀数组写还简单些。 我们把样例aaabaabaaaab后缀排序后列出来:
阅读全文
摘要:题意 求区间l~r的a[l]%a[l+1]%……%a[r]的值 思路 因为取模的变化是很快的,所以线段树查找区间内第一个小于等于a[l]的数的位置,更新ans后继续查找即可。 注意查询满足某种条件的位置要这样写: int query(int L,int R,int l,int r,int rt,in
阅读全文
摘要:题意 给你一个1~n的排列,由两种操作: 1 pos:将a[pos]+10 000 000 2 r k:求大于等于k且不等于a[1~r]的数的最小值。 强制在线。 思路 如果没有1操作,那么我们直接主席树就OK了。 考虑不真正的进行修改,每次1操作就把a[pos]插进set,因为加10 000 00
阅读全文
摘要:题意 https://nanti.jisuanke.com/t/A1955 求所有本质不同的回文串转成数后的和。 思路 如果了解回文树的构造原理,那么这题就很简单了,回文树每个结点代表一个回文串,每添加一个字符会在两端加上这个字符,我们只需要用res[]数组表示原串的前缀和,然后每添加一个字符的贡献
阅读全文
摘要:题意 链接:https://nanti.jisuanke.com/t/A1998 给出一个有根树(根是1),有n个结点。初始的时候每个结点的值都是0.下面有q个操作,操作有两种,操作1.将深度为L(根节点深度为0)的点的值全部增加X。操作2.查询以x为根的子树的结点值得和。其中N,Qblock。 对
阅读全文
摘要:题意 链接:https://cn.vjudge.net/problem/HDU 4729 给你n个点,然你求两个点s和t之间的最大流.而且你有一定的钱k,可以进行两种操作 1.在任意连个点之间建立一个单位1的流,费用a 2.将原先的流扩大1个单位,费用b 思路 题目已经说了是一棵树,那么树上两点的最
阅读全文