首页 > Tree
头像 又在摸鱼的大熊猫很勤奋努力
发表于 2020-09-04 17:12:39
Tree 题目大意: 首先,我们有次操作 操作:在节点下面再加一个权值为的点 操作:询问从点开始往上走,(每次遇到权值大于当前选过的最后一个点的点必定会选),问最多能选多少点 分析 我们可以很容易的发现,我们选中的点一定是一个单调不下降序列 那么就是说,我们可以稍微改动一下操作一,让每一 展开全文
头像 DeNeRATe
发表于 2020-09-07 19:24:02
分析 首先,此题需要加点和查询操作我们可以想到倍增但由于对于祖先的选择有要求所以我们需要修改对于倍增数组的表示Anc[i][j]表示从点向上走个满足要求的点之后,到达的点Sum[i][j]表示从点向上走个满足要求的点得权值之和这样我们就可以查询了至于插入操作我们需要先求出此点祖先中第一个满足要求的祖 展开全文
头像 Dear㉿You
发表于 2020-09-05 10:05:15
翻译(qwq,看了好久的题) 输入n组数据,p,x,y,将其处理为x^=las,y^=las,las是上一次输出的答案,初始为1 1. 1 x y 将一个权值为y的新节点加到x节点的后面 2. 2 x y 求从点x到根节点的路径上求出最长的不下降子序列,且满足它的和不大于y 展开全文
头像 Acapplella
发表于 2020-09-13 11:25:59
#include <bits/stdc++.h> using namespace std; const int maxn = 4e5 + 7; typedef long long ll; int f[maxn][20]; ll dp[maxn][20], val[maxn]; int m 展开全文

等你来战

查看全部