首页 > 其他分享 >反思---树上LIS

反思---树上LIS

时间:2023-10-06 21:38:27浏览次数:26  
标签:tmpl int 回溯 dfs --- tmpx LIS 反思

反思---树上LIS

题目描述

给你一棵 n个节点的树,树的每个节点上都有一个值 a[i] 。

现在要您求出从 1 号点到 i 号点的最短路径上最长上升子序列的长度。

就是单调栈优化+dfs回溯

对比两段代码的dfs部分:

//AC Code
inline void dfs(int u,int f){
	int w=lower_bound(b+1,b+l+1,a[u])-b;
	int tmpl=l,tmpx=b[w];
	b[w]=a[u]; 
	if(w>l) ++l;
	ans[u]=l;
	for(auto v:G[u]){
		if(v==f) continue;
		dfs(v,u);
	}
	l=tmpl,b[w]=tmpx;//回溯回未访问到u的状态 
}

//68pts
inline void dfs(int u,int f){
	int w=lower_bound(b+1,b+l+1,a[u])-b;
	b[w]=a[u];
	if(w>l) ++l;
	ans[u]=l;
	int tmpl=l,tmpx=b[w];
	for(auto v:G[u]){
		if(v==f) continue;
		dfs(v,u);
		l=tmpl,b[w]=tmpx;//回溯回访问到u,未访问v的状态 
	}
}

Q:同样表示还原状态,两者得分为何不同?

A:第二份代码其实没有将 访问v 对b数组的修改 还原(而只是保证了u对b数组的修改)

Ref:图上dfs需要回溯时尽量只涉及一个点的影响

标签:tmpl,int,回溯,dfs,---,tmpx,LIS,反思
From: https://www.cnblogs.com/superl61/p/17745038.html

相关文章

  • G7、Semi-Supervised GAN 理论与实战
    ......
  • SDU Open 2023-F、树上随机游走
    SDUOpen2023-F、树上随机游走题目:https://codeforces.com/group/2altttv8oU/contest/477604/problem/F题意:给定一棵\(n\)个点的无根树,在树上随机游走(即每次会从当前点等概率地走到一个相邻结点),\(q\)次询问,每次问从\(s\)走到\(t\)的期望步数。\(1\leqn,q\leq2\times......
  • 01-Shell脚本入门
    1.介绍1.1疑问linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等?答:使用linux的内核操作计算机的硬件1.2Shell介绍通过编写Shell命令发送给linux内核去执行,操作的就是计算机硬件.所以Shell命令是用户操作计算机硬件的桥梁Shell是命令,类似于windows系统Dos命令......
  • 39-13
    假设有两个按元素值递减次序排列的线性表,均以单链表的形式存储,编写算法,将这两个单链表合成一个按值递减的单链表,使用原链表的结点。没啥好说的,这个有手就行#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}LNode,*LinkLi......
  • 无涯教程-OC - Image View函数
    ImageView用于显示单个图像或动画序列。ImageView-重要属性imageHighlightingImageuserInteractionEnabledanimationImagesanimationRepeatCountImageView-重要方法-(id)initWithImage:(UIImage*)image-(id)initWithImage:(UIImage*)imagehighlightedIm......
  • openGauss学习笔记-91 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-M
    openGauss学习笔记-91openGauss数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT外部支持工具为了支持MOT,修改了以下外部openGauss工具。请确保使用的工具是最新版本。下面将介绍与MOT相关的用法。有关这些工具及其使用方法的完整说明,请参阅《工具与命令参考》。91......
  • Spring-Boot 整合 J2EE Web组件
    一,整合Servlet1,通过注解扫描完成Servlet组件的注册1.1编写servlet/***SpringBoot整合Servlet方式一**<servlet>*<servlet-name>FirstServlet</servlet-name>*<servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>*</servlet>**<servlet-......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动......
  • umich cv-2-1
    UMICHCVLinearClassifiers对于使用线性分类器来进行图片分类,我们可以给出这样的参数化方法:而对于这样一个式子,我们怎么去理解呢?首先从代数的角度,这个f(x,W)就是一张图片的得分,我们可以将一张图片所有的像素点输入,乘以一个权重矩阵,再加上一个偏置项b,就得到f(x,W)举个具体的......
  • 《CF gym Reverse LIS》解题报告
    原题链接一开始看到这题就很像模拟费用流,不过立马就放弃了,然后之后就再也没想过这个思路了。。。正解是模拟费用流,先讲一下答案长什么样,把\(0\)的权值记为\(1\),\(1\)的权值记为\(-1\),那么我们答案就是要选一段前缀和\(k\)段不相交的区间的最大值加上\(1\)的个数。......