西克 题目传送门 Description Solution 跟 2021年省选A卷D2T1 一模一样,懒得讲了 不过这个题似乎有点卡空间,所以卡不过去 Code #include <bits/stdc++.h> using namespace std; #define Int register int #define MAXN 2000005 template <typename T> void read (T &x){char c =
本文将同步发布于: 洛谷博客; csdn; 博客园; 简书。 题目 题意简述 给定一个长度为 \(n\) 的排列 \(p\),在上面等概率随机选择 \(k\) 个点,建一张 \(i\to p_i\) 的图,求有多大的概率这 \(k\) 个点可以标记到所有点。 \(1\leq k\leq n\leq 152501\)。 题解 破排列为环 显然,一个排列可以
给定 \(n\) 个点的树,要求一种树剖方案使得"代价"尽可能小。 \(n\le 10^5\)。 设 \(f_u\) 表示只考虑 \(u\) 的子树时的代价,枚举重链 \((u,v)\),其中 \(v\) 是叶子。 代价有两部分,一部分是重链连出的子树的 \(f+siz\) 之和,还有一部分是重链的代价:设重链是 \(u=a_0,\cdots,a_d=v\),则
考虑枚举\(T'\)中两点的\(lca\),之后要做的为最大化\(dep_x+dep_y-dep_{lca(x,y)}\),转化一下式子就是\(\frac {dep_x+dep_y+dist_{x,y} }{2}\). 那么我们考虑在边分树的每一个节点维护往左最大的\(dep_x+dist_{a,x}\)和往右最大的\(dep_y+dist_{b,y}\). 考虑因为边分树的树高是\(
题目 题目链接:https://codeforces.com/problemset/problem/375/D 给定一棵 \(n\) 个节点的有根树,节点有颜色,\(m\) 次询问一个点的子树内出现次数 \(\geq k\) 的颜色数有多少。 \(n\leq 10^5\)。 思路 dsu on tree 板子题。 本来太板子不想写的,但是因为太久没写了就水了一道题。 直
点分树,也叫动态点分治,就是对于一个树性结构,按照重心的父子关系转化成一颗深度严格为logn的树 与普通点分治不同的是,他是动态的。。。就是可以在树上的节点进行权值更改,然后暴力得到答案 这个暴力可不是从根节点一直往下搜,而是利用某些数据结构,或者一个比较简单的递推式,又或是啥的,
点分树,也叫动态点分治,就是对于一个树性结构,按照重心的父子关系转化成一颗深度严格为logn的树 与普通点分治不同的是,他是动态的。。。就是可以在树上的节点进行权值更改,然后暴力得到答案 这个暴力可不是从根节点一直往下搜,而是利用某些数据结构,或者一个比较简单的递推式,又或是啥的,
感谢线段树进阶,给了我重新做人的机会。---------------某不知名OIer,Keen_z Description 题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了 LJJ感叹道“这里真是个迷人的绿色世界,空气清新、淡雅,到处散发
题面 一个树形dp, 我们根据题意去想如何得到两两距离,发现一条边的两侧每有一对同色点,这条边就要被经过一次 在当前的子节点的子树中,枚举有k个黑点,需要一个在其他子树中选了共 j - k 个黑点的状态 code #include<bits/stdc++.h> #define int long long using
题目描述 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将一个序列按照从小到大排序后处在中间位置的数。(若序列长度为偶数,则指处在中间位置的两个数中较小的那个) 例1:1 2
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 4140 Solved: 2276[Submit][Status][Discuss] Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打
后缀自动机 洛谷题单 前置芝士 后缀自动机1 后缀自动机2 后缀自动机3 广义后缀自动机 例题略解 P3804 【模板】后缀自动机 (SAM) 模板题,先按顺序把每一个压进去,然后按计数排序(就是SA里的那个)排一下序。 可以发现len的大小某种意义上就是该节点的深度,再用siz存一下,更新最大值就好了
https://www.luogu.com.cn/problem/P4178 思路: 对u遍历每一棵子树,计算出dis,并询问前面子树有多少个点深度小于等于k−d[i] ,查询有多少值<=k-d[i]的,树状数组就好了。询问结束后把这个子树的答案累加进数组。遍历完所有子树后清空当前u的所有子树答案。注意是Dfs清空。 点分治后
题目链接 题解 ⭐:Tarjan相关操作可以考虑搜索树 讨论2种情况:① 若节点\(i\)不是割点,则封锁它不会影响到无向图的连通性,\(ans=2\cdot (n-1)\)(自己出不去,别人进不来); ② 若节点\(i\)是割点,则封锁它会将全图分为多个连通分量。 对于第2种情况,设\(i\)的子节点\(j\)子树大小为\(siz_j\)
正题 题目链接:https://www.luogu.com.cn/problem/P4323 题目大意 给出\(n\)个点的树和加上一个点之后的树(编号打乱)。 求多出来的是哪个点(如果有多少个就输出编号最小的)。 \(1\leq n\leq 10^5\) 解题思路 定义一下\(hash\)值\(P(i)\) 我的做法是\(P(i)=p^i\),\(p\)是一个质数,当然
考场 \(65+5+0\),并列 rk2 最高分 \(55+10+10\) T1:等比数列可以写作 \(q^kx\),发现 \(q\le1000\) 且有一档分为 \(a_i\le100\),想到 \(2^{60}>10^{18}\),即等比数列的长度最多为 \(59\),这样枚举的区间就从 \(n^2\) 下降到了 \(60n\)。对于每个区间,排序后枚举 \(q\),通过预处理 \(q\) 的
题目链接 题解 LCA的拓展题哦。 LCA计算\(dis(x,y)\)(边数),如果为奇则不存在距离相等的房间。如果为偶,设\(x,y\)路径中与2点距离相等的节点为\(a\)。假设现在整棵树的根节点为\(a\),\(x\)在\(a\)的子节点\(b\)的子树中,\(y\)在\(a\)的子节点\(c\)的子树中。易证,除\(b,c\)的子树以外,其
[CSP-S2019] 树上的数 这显然是一个树上贪心的问题。 [CSP-S2019] 划分 借助干草堆的思路:所叠层数最高时,其底层最窄。 不难写出状态转移方程: f x =
被迫工作~ 题目链接 题意概述: 给定一棵树,除根外每个点有一个权值,求选 $k$ 个点后权值最大和,要求一个点被选,那么他的祖先必须被选. 思路: 简单 $n^3$ 次方 $dp$ 一下,n<=100怎末跑都能过,从根节点向下深搜一边,对于一个点 $x$,枚举他的每个儿子,总共选几个点和当前儿子选几个
题目大意: 给你一颗树,每次求树上两点简单路径的交点个数 题目思路: 其实第一反应是lca,但是写了好多种情况并没有发现什么规律, 然后想用线段树维护个dfs序看序列里相同的数字的个数,但是dfs的顺序好像回影响答案,因为操作的是一个子树, 都到这里了,可以直接树剖,因为树剖时剖的时轻重链,可
正题 题目链接:https://www.luogu.com.cn/problem/CF990G 题目大意 给出一棵有点权的树,对于每个 k k k求有多条路径的点权 g
[CF592D] Super M - 树的直径 Description 有一个有 n 个节点的树,其中有 m 个点被标记。现在从任意点开始,去遍历这 m 个点,问你遍历这 m个点的最少路程(边的权值为1)。 Solution 答案显然是这个标记点构成的虚树大小减去虚树直径 当然我们不需要真的建虚树,从一个标记点开始 DFS,考察子
有这样一类问题(例:loj121,122),要求在无向图中实现如下操作: 1.增加一条边 2.删除一条边 3.询问两点是否连通 这类问题有离线做法和在线做法,两者的思想完全不同 离线做法的思想是,考虑到每一条边存在的时间范围是一个区间,在线段树对应的区间打上标记,然后从根节点自顶向下dfs,每访问一个
目录P1099P5659P5666 P1099 直接把直径揪出来从一边到一边扫过去就行了。 【记录】 P5659 按照字典序贪心,对每个点维护相邻的边的删除顺序, 实际上细节并不多。 【记录】 P5666 考虑计算每个点作为重心的次数。 首先把随便一个重心拿出来做根, 然后显然 x 要想作为重心就不能切 x
P1273 有线电视网 树上背包 题意思路Code 传送门: https://www.luogu.com.cn/problem/P1273 题意 给 一 棵 树 ,