F - Dominant Indices 思路:树上启发式合并 先跑轻子树,然后清除轻子树的信息 最后跑重子树,不清除信息 然后再跑一遍轻子树,重新加回轻子树的信息 由于一个节点到根节点最多有logn个轻边,所以复杂度为nlogn 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pi acos(-1.0) #define LL long long //#def…
F. Dominant Indices 题意: 给一颗无向树,根为1.对于每个节点,求其子树中,哪个距离下的节点数量最多.数量相同时,取较小的那个距离. 题目: 这类题一般的做法是树上的启发式合并,复杂度是O(nlogn).但由于这题所求的信息与深度有关,因此可以使用长链剖分的技巧,复杂度可以是O(n). 长链剖分可以维护以深度为下标的信息.先预处理,以深度为依据,标记长儿子.维护答案时,对于每个节点,O(1)继承其长儿子的信息.然后暴力合并其他儿子.则时间复杂度是所有长链的长度之和,即O(n)…
题意:求每个点的子树中哪一层节点数最多,如果有节点数最多不唯一,取层数最小的. 题解:dus on tree 基本想法是对每一个节点都构建一个deep数组,然后从底向上更新过来,但是这样空间复杂度和时间复杂度都会是O(n^2)无法承受. 然后向办法共用deep数组和记录其数值的数组,那么这时候对于一个节点来说,如果他每次都要重新遍历他所有的子节点,那么时间复杂度仍是O(n^2),所以考虑保留他某个儿子的火种,那当然是保留其子树最大的儿子节点了,所以每次先dfs其不是子数最大的儿子的节点,而后遍历…
CF1009F Dominant Indices 题意简述 给出一颗以\(1\)为跟的有根树,定义\(d_{i,j}\)为以\(i\)为根节点的子树中到\(i\)的距离恰好为\(j\)的点的个数,对每个点求出一个最小的\(j\)使得\(d_{i,j}\)最大 这个长链剖分的小trick感觉和树上分组背包的复杂度有点神似啊,据说和dsu on tree也有点像? 暴力的\(dp_{i,j}\)代表与\(i\)点相距为\(j\)的点的个数,复杂度\(O(n^2)\) 对每个点按重量维护重儿子,然后每…
这道题用到了dsu(Disjoint Set Union) on tree,树上启发式合并. 先看了CF的官方英文题解,又看了看zwz大佬的题解,差不多理解了dsu on tree的算法. 但是时间复杂度有点玄学,问了一下zwz大佬才懂了为什么是nlogn. 题目传送门 先考虑暴力n^2的算法. 显然对于某个点,搜一遍它的子树,就能得到这个点的答案.这一步是O(n)的. 每个点都这么搞一遍,就是O(n^2)的暴力做法. 但是这个暴力做法有一点不足,子节点的答案没有应用到父节点的计算中,白白浪费时…
You are given a rooted undirected tree consisting of nn vertices. Vertex 11 is the root. Let's denote a depth array of vertex xx as an infinite sequence [dx,0,dx,1,dx,2,…][dx,0,dx,1,dx,2,…], where dx,idx,i is the number of vertices yy such that both…
传送门 还是放个链接让泥萌去学一下把 orzYYB 题目中要求的\(f_{x,j}\),转移是\(f_{x,j}=\sum_{y=son_x} f_{y,j-1}\),所以这个东西可以用长链剖分优化,利用指针,每个点直接继承重儿子信息,轻儿子的话暴力合并,一边合并一边更新答案 #include<bits/stdc++.h> #define LL long long #define il inline #define re register using namespace std; const…
题面 长链剖分模板题 只能按深度统计,同时比DSU on tree难理解一些,但是复杂度少个log 对每个点抓出向下延伸最长的儿子叫做长儿子.在合并时用指针继承信息,对于长儿子O(1)继承,其他儿子暴力 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int len[N],imp[N],ans[N]; *N],goal[*N]; ; int n,t1,t2,cnt…
首先观看数据: l 数据的基本特征用 describe 描述每个基本特征 l 画图画出每个特征的基本统计图 应用import matplotlib.pylab as pl 画图显示 l 关于特征值特别大的数据集 :可能对结果产生权重的等级影响 所以尽量将数据进行归一化 特征值归一化的原因: 1:看数据范围看看是否可以归一化 Aum 归一化 虽然等级已经有过归一化这个方向: l :看看数据是否完整() 想到对后续目标的完整度处理 由于一般的模型对于空值来讲不符合模型的,…
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest subst…