当前位置: 首页 > news >正文

F - LIS on Tree

F - LIS on Tree (atcoder.jp)

问题描述:树上LIS。

普通LIS。O(n * n)

void solve() {int n; cin>>n;vector<int> f(n + 1),a(n+1);for(int i = 1; i <= n; ++i) {cin>>a[i];f[i] = 1;for(int j = 1; j < i; ++j) {if(a[i] > a[j]) f[i] = max(f[i], f[j] + 1);}}cout<<*max_element(all(f));
}

二分优化。O(n * log(n))

/// 版本1
void solve() {vector<int> f;int n; cin>>n;for(int i = 0; i < n; ++i) {int t; cin>>t;auto pos = lower_bound(all(f), t);if(pos == f.end()) f.push_back(t);else *pos = t;}cout<<f.size();
}
/// 版本2
void solve() {int n; cin>>n;vector<int> f(n,INF);int ans = -1;for(int i = 0; i < n; ++i) {int t; cin>>t;int pos = lower_bound(all(f), t) - f.begin();f[pos] = t;ans = max(ans, pos);}cout<<ans + 1;
}

对于树上LIS来说,如果只考虑一条链的话,就是裸LIS。由于对于一个父节点,它的儿子节点都共用父节点往上的那一条链上的权值,而且遍历完1个儿子节点,对其余的儿子节点的操作中需要将这个儿子节点的操作撤销掉。这个撤销很像回溯。数据范围很大,需要LIS优化,如果用版本1的LIS,每次需要判断是改回还是删除,可能删除这个操作会超时;用版本2的LIS,只需要考虑改回就行,更简单些。

具体代码思路:无向树建树。遍历到节点u时,计算到这个节点u的LIS长度,之后将节点u的权值加入到LIS数组中,找儿子节点,最后再将 “之前节点u的权重加入到LIS数组中” 的这一步进行回溯/撤销。

具体代码:

// 版本2 AC代码
void solve() {int n; cin>>n; vector<vector<int>> g(n+1);vector<int> val(n + 1),f(n+1, INF), ans(n + 1);for(int i = 1; i <= n; ++i) cin>>val[i];for(int i = 1; i < n; ++i) {int u,v; cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}auto dfs = [&](auto &&dfs, int u, int fu) -> void {// 找到第一个大于等于val[u]的位置int pos = lower_bound(f.begin()+1, f.end(), val[u]) - f.begin(); int tmp = f[pos]; // 记录这个位置的权重,因为要撤销/回溯f[pos] = val[u]; // 将pos位置更改为val[u]ans[u] = max(ans[fu], pos); // 求LIS长度for(auto y: g[u]) {if(y == fu) continue;dfs(dfs, y,u);}// 进行撤销操作f[pos] = tmp;};dfs(dfs, 1, 0);for(int i = 1; i <= n; ++i) cout<<ans[i]<<endl;
}
// 版本1 RE代码 可能还有错误没有找到》
void solve() {int n; cin>>n; vector<vector<int>> g(n+1);vector<int> val(n + 1),f, ans(n + 1);for(int i = 1; i <= n; ++i) cin>>val[i];for(int i = 1; i < n; ++i) {int u,v; cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}auto dfs = [&](auto &&dfs, int u, int fu) -> void {int tag = 0;auto pos = lower_bound(all(f), val[u]);int len = pos - f.begin() + 1;if(pos == f.end()) {tag = -1;f.push_back(val[u]);} else {tag = *pos;*pos = val[u];}ans[u] = len;for(auto y: g[u]) {if(y == fu) continue;dfs(dfs, y,u);}if(tag == -1) {f.erase(f.end()-1);} else *pos = tag;};dfs(dfs, 1, 0);for(int i = 1; i <= n; ++i) cout<<ans[i]<<endl;
}

相关文章:

F - LIS on Tree

F - LIS on Tree (atcoder.jp) 问题描述&#xff1a;树上LIS。 普通LIS。O(n * n)。 void solve() {int n; cin>>n;vector<int> f(n 1),a(n1);for(int i 1; i < n; i) {cin>>a[i];f[i] 1;for(int j 1; j < i; j) {if(a[i] > a[j]) f[i] max…...

2023 年全国大学生数学建模B题目-多波束测线问题

B题目感觉属于平面几何和立体几何的问题&#xff0c;本质上需要推导几何变换情况&#xff0c;B题目属于有标准答案型&#xff0c;没太大的把握不建议选择&#xff0c;可发挥型不大。 第一问 比较简单&#xff0c;就一个2维平面的问题&#xff0c;但有点没理解&#xff0c;这个…...

qt creater11 翻译国际化教程教程:

先出效果图。 闲聊几句&#xff1a;qt这个翻译很方便&#xff0c;能直接导出项目里所有文字。 具体步骤如下&#xff1a; 在Qt中&#xff0c;我们可以使用QTranslator类来实现多语言切换。以下是一般步骤&#xff1a; 1. 在你的源代码中&#xff0c;所有需要翻译的字符串都…...

【AWS实验 】在 AWS Fargate 上使用 Amazon ECS 部署应用程序

文章目录 实验概览目标实验环境任务 1&#xff1a;连接到实验命令主机任务 2&#xff1a;将应用程序容器化任务 3&#xff1a;构建 Web2048 容器任务 4&#xff1a;创建 Amazon ECR 存储库并推送 Docker 映像任务 5&#xff1a;创建 ECS 集群任务 6&#xff1a;测试应用程序总结…...

matlab几种求解器的选择fsolve-sole-vpasolve

文章目录 fsolvesolvevpasovle总结vpasovle的结果fsovle的结果 fsolve 求数值解 result_xfsolve(my_fun,x0,options)参数: my_fun:待求解函数&#xff0c;作为一个.m文件 x0:初始值&#xff0c;向量&#xff0c;可以仅仅指定其中的几项solve 强大的求解器。在方程组中求解析…...

无限访问 GPT-4,OpenAI 强势推出 ChatGPT 企业版!

继 ChatGPT 收费大降价、推出 App 版等系列动作之后&#xff0c;OpenAI 于今日宣布正式发布面向企业的 AI 助手——ChatGPT Enterprise 版。 与 To C 端的 ChatGPT 版本有所不同的是&#xff0c;该版本可以以更快速度无限制地访问 GPT-4&#xff0c;还可以用来处理更长输入的上…...

MySQL的故事——Schema与数据类型优化

Schema与数据类型优化 一、选择优化的数据类型 更小的通常更好 应该尽量使用可以正确存储数据的最小类型&#xff0c;更小的数据类型通常更快&#xff0c;因为他们占用更少的磁盘&#xff0c;内存和CPU缓存&#xff0c;并且处理时需要的CPU周期更少 简单就好 更简单的数据类型…...

C++编译和链接

编译和链接 一、源代码的组织 头文件&#xff08;.h&#xff09;&#xff1a;#include头文件、函数的声明、结构体的声明、类的声明、模板的声明、内联函数、#define和const定义的常量等。 源文件&#xff08;.cpp&#xff09;&#xff1a;函数的定义、类的定义、模板具体化的…...

【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门

Markdown编辑器如何使用-csdn博客编写入门 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…...

【docker】运行redis

拉取redis镜像 有多种选择&#xff1a; redis&#xff08;基础版&#xff09;redis/redis-stack&#xff08;包含redis stack server和RedisInsight&#xff09;redis/redis-stack-server&#xff08;仅包含redis stack server&#xff09; docker pull redis docker pull r…...

Paddle训练COCO-stuff数据集学习记录

COCO-stuff数据集 COCO-Stuff数据集对COCO数据集中全部164K图片做了像素级的标注。 80 thing classes, 91 stuff classes and 1 class ‘unlabeled’ 数据集下载 wget --directory-prefixdownloads http://images.cocodataset.org/zips/train2017.zip wget --directory-prefi…...

SpringBoot 框架学习

java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...

java - lua - redis 完成商品库存的删减

java调用lua脚本完成对商品库存的管理 主页链接 微风轻吟挽歌的主页 如若有帮助请帮忙点赞 //lua脚本 获取到内存不够的商品StringBuilder sb new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local table {} ");//获取值sb.append(" …...

dbeaver离线安装clickhouse连接驱动

Clickhouse 数据库连接工具——DBeaver 主要介绍了Clickhouse 数据库连接工具——DBeaver相关的知识&#xff0c;希望对你有一定的参考价值。 Clickhouse 数据库连接工具——DBeaver 1.下载 DBeaver 和 连接驱动 https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.…...

2024腾讯校招后端面试真题汇总及其解答(二)

11.如果同时有5个任务在10分钟之后提交,或者更多,那么如果是一个个从队列中拿数据,那么前一个任务会影响后续任务执行时间,说一下解决思路 你的问题是一个典型的并发处理问题。如果你的系统是单线程的,那么的确,前一个任务的执行时间会影响后续任务的执行时间。但是,你…...

datagrip 相关数据连接信息无缝迁移

背景 因为公司换电脑了&#xff0c;接触的项目比较多&#xff0c;不同项目&#xff0c;不同环境的数据库连接有好几十个&#xff0c;如果在新电脑上挨个重新连接一遍劳心劳力&#xff0c;所以想看一下能不能直接将之前保存的连接信息直接迁移到新的电脑上面。 为此&#xff0c…...

不就是G2O嘛

从零开始一起学习SLAM | 理解图优化&#xff0c;一步步带你看懂g2o代码 SLAM的后端一般分为两种处理方法&#xff0c;一种是以扩展卡尔曼滤波&#xff08;EKF&#xff09;为代表的滤波方法&#xff0c;一种是以图优化为代表的非线性优化方法。不过&#xff0c;目前SLAM研究的主…...

C#开发的OpenRA游戏之系统参数选项按钮

C#开发的OpenRA游戏之系统参数选项按钮 前面分析了信标按钮,从图上可以看到,靠右边的按钮,就是系统参数选项按钮: 这个按钮与前面三个按钮是不一样的,虽然它们在排列位置上是放在一起,但是处理的方法方式是不一样的,因为这个选项按钮,并不需要发命令给服务器,再返回来…...

苹果启动2024年SRDP计划:邀请安全专家使用定制iPhone寻找漏洞

苹果公司昨天&#xff08;8月30日&#xff09;正式宣布开始接受2024 年iPhone安全研究设备计划的申请&#xff0c;iOS 安全研究人员可以在 10 月底之前申请安全研究设备 SRD。 SRD设备是专门向安全研究人员提供的iPhone14Pro&#xff0c;该设备具有专为安全研究而设计的特殊硬…...

std::make_shared和new初始化智能指针的区别

先看代码&#xff1a; class Base {public:Base(int num):a(num) {std::cout << "Base() construct" << std::endl;}~Base() {std::cout << "Base() deconstruct" << std::endl;}int Get() {return a;}private:int a; };void tes…...

无涯教程-JavaScript - ERFC.PRECISE函数

描述 ERFC.PRECISE函数返回x和无穷大之间集成的互补ERF函数。 互补误差函数等于1-ERF(即1-误差函数),由等式给出- $$Erfc(x) \frac {2} {\sqrt {\pi}} \int_ {x} ^ {\infty} e ^ {-t ^ 2} dt $$ 语法 ERFC.PRECISE(x)争论 Argument描述Required/OptionalxThe lower bound…...

2023国赛数学建模C题思路分析 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c; 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...

手写Spring:第1章-开篇介绍,手写Spring

文章目录 一、手写Spring二、Spring 生命周期 一、手写Spring &#x1f4a1; 目标&#xff1a;我们该对 Spring 学到什么程度&#xff1f;又该怎么学习呢&#xff1f; 手写简化版 Spring 框架&#xff0c;了解 Spring 核心原理&#xff0c;为后续再深入学习 Spring 打下基础。在…...

C语言中,字节对齐是一种重要的内存管理概念

C语言中&#xff0c;字节对齐是一种重要的内存管理概念 字节对齐的目的是为了提高内存访问的效率。因为CPU访问内存的最小单位是字节&#xff0c;所以如果数据结构的成员以正确的字节边界对齐&#xff0c;那么CPU就可以直接访问这些成员&#xff0c;而不需要进行额外的内存移动…...

网络丢包问题,敢不敢这样定位?

下午好&#xff0c;我的网工朋友。 所谓丢包&#xff0c;是指在网络数据的收发过程中&#xff0c;由于种种原因&#xff0c;数据包还没传输到应用程序中&#xff0c;就被丢弃了。 这些被丢弃包的数量&#xff0c;除以总的传输包数&#xff0c;也就是我们常说的丢包率。 丢包…...

【漏洞复现】H3C路由器信息泄露任意用户登录

漏洞描述 通过访问特地址得到密码可进行登录。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中…...

随机数算法,SQL

SELECT* FROMprizes_config WHEREweight > ( SELECT FLOOR( RAND() * MAX( weight )) FROM prizes_config ) order by weight asc-- LIMIT 1;记录 id 权重 1 5 2 10 3 50 4 100 找权重最大的那个值&#xff0c;调用rand()函数&#…...

什么是软件测试+软件测试的分类【软件测试】

软件测试 什么是软件&#xff1f; 软件 程序 数据 文档 软件测试的对象有哪些&#xff1f;程序 数据 文档 C/S与B/S架构 C/S&#xff1a;客户端服务器&#xff0c;这种就是我们一定要安装一个客户端才能够用的软件&#xff0c;就叫C/S。比如&#xff1a;微信、qq B/S&am…...

2023国赛C题解题思路:蔬菜类商品的自动定价与补货决策

本次将全程提供国赛C题完整解题思路及代码&#xff0c;同时共享一些国赛论文模板等资料&#xff0c;需要的小伙伴可以关注一下&#xff0c;持续更新&#xff01;大家也可以关注B站视频&#xff1a;不知名数学家小P 实时更新 本次C题是一道较为简单的统计分析题目&#xff0c;建…...

MIT6.824 Spring2021 Lab 1: MapReduce

文章目录 0x00 准备0x01 MapReduce简介0x02 RPC0x03 调试0x04 代码coordinator.gorpc.goworker.go 0x00 准备 阅读MapReduce论文配置GO环境 因为之前没用过GO,所以 先在网上学了一下语法A Tour of Go 感觉Go的接口和方法的语法和C挺不一样, 并发编程也挺有意思 0x01 MapRed…...

asp网站制作设计教程/广告素材

需求&#xff1a;y轴刻度 最大值取接口返回的 最大值数据 方法一&#xff1a; data() {return {yAxisMaxNum: 49};},initChart() {// 创建 echarts 实例。this.myChartOne this.$echarts.init(this.$refs.Echart);let maxNum this.yAxisMaxNumvar option {tooltip: {trigger…...

wordpress多麦/活动推广

${content}你输入的邮件地址曾经通过${type}激活了本站帐号&#xff0c;请使用${type}帐号直接登录。课程习题&#xff1a;提示请选择一个答案提交查看正确答案下一题${option}: ${content}{if multiple}{else}{/if}{if defined("xlist")&&!!xlist.length}{l…...

榆林免费做网站/电商运营自学全套教程

程序组装代码存在吗? 每个程序是代码组成的,固定的程序可能是固定的代码,当其组装完成后,就可以执行这段程序. 怪不得代码搬运工这样的字眼会存在,那编程的意义何在? 字母A联合字母B形成了程序AB,但A与B已经是存在的A与B.既然已经存在,并且可按规律或规则规范去组织进行使用.…...

网站建设项目简介/关键词排名优化易下拉技巧

最稳定的几何形状是三角形&#xff0c;不是四边形&#xff0c;也不是五边形。那么是不是最稳定的就是最安全的呢&#xff1f;一旦三角形的一条边受损了&#xff0c;三角形就不复存在了。有没有比三角形更稳定、更安全、更可靠的关系网呢&#xff1f;DNA结构是分叉交错形的、可替…...

网站吸流量/站长工具网站测速

在当前的大环境里&#xff0c;实体店产品同质化非常严重。经过一条商业街&#xff0c;我们会明显发现&#xff0c;同行业的几家店铺不管是产品类型、装修风格还是产品价格都十分相似&#xff0c;给人的感觉就是把相同的产品放在不同的店里。 这个时候&#xff0c;优秀的营销策…...

网站后台流程/新媒体营销推广公司

2 ZYNQ PL开发 开发流程 开发使用vivado&#xff0c;流程如下 1.新建工程 工程项目含义 这里简单介绍下各个工程类型的含义。“RTL Project”是指按照正常设计流程所选择的类型&#xff0c;这也是常用的一种类型 “RTL Project”下的“Do not specify sources at this time…...