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

洛谷-P11403 [RMI 2020] 软盘 / Floppy 题解

注意到,区间最值可以转化成笛卡尔树上 LCA。因此只需要传笛卡尔树即可。

考虑单调栈建树过程。用 0/10/1 表示进出栈,这样就可以重现建树过程,从而唯一确定树的形态。

由于每个点最多进出栈各一次,因此字符串长度 ≤2�≤2N。

Code

#include "floppy.h"
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i(a);i<b;++i)
#define per(i,a,b) for(int i(a);i>b;--i)
#define rept(i,a,b) for(int i(a);i<=b;++i)
#define pert(i,a,b) for(int i(a);i>=b;--i)
#define pb push_back
#define eb emplace_back
using namespace std;
constexpr int N=4e4+5;
int st[N],l[N],r[N],fa[16][N],dep[N];
string s;
void read_array(int subtask_id,const vector<int> &v){
int n=v.size(),top=0;
s.clear();
rep(i,0,n){
while(top&&v[st[top]]<v[i]) --top,s.pb('0');
st[++top]=i,s.pb('1');
}
save_to_floppy(s);
}
void dfs(int u){
dep[u]=dep[fa[0][u]]+1;
rept(i,1,15) fa[i][u]=fa[i-1][fa[i-1][u]];
if(l[u]) fa[0][l[u]]=u,dfs(l[u]);
if(r[u]) fa[0][r[u]]=u,dfs(r[u]);
}
int lca(int u,int v){
if(dep[u]<dep[v]) u^=v^=u^=v;
int d=dep[u]-dep[v];
rept(i,0,15) if(d>>i&1) u=fa[i][u];
if(u==v) return u;
pert(i,15,0) if(fa[i][u]^fa[i][v]) u=fa[i][u],v=fa[i][v];
return fa[0][u];
}
vector<int> solve_queries(int subtask_id,int N,const string &bits,const vector<int> &a, const vector<int> &b){
vector<int> ans;
int top=0,p=0;
rept(i,1,N){
int lst=0;
while(bits[p]=='0') lst=st[top--],++p;
if(lst) l[i]=lst;
if(top) r[st[top]]=i;
st[++top]=i,++p;
}
dfs(st[1]);
rep(i,0,a.size()) ans.eb(lca(a[i]+1,b[i]+1)-1); // 注意这里节点编号从1开始
return ans;
}
http://www.jsqmd.com/news/1106859/

相关文章:

  • 高光谱相机全解析:技术分类、主流品牌与选型指南
  • 连锁超市收银系统选什么?四大品牌深度横评与避坑指南
  • Java Stream、File与IO-核心场景实战
  • NifSkope 3D模型编辑器:专业游戏模型处理完全指南
  • 国内物流包装垂直随机振动试验优先选用 GB/T 4857.23-2021 附录 D 说明
  • 【课程设计/毕业设计】基于 SpringBoot 的校园日常行为规范评分归档系统的设计与实现 基于 SpringBoot 的中小学学生品行综合考评管理系统【附源码、数据库、万字文档】
  • 越华环保集团资质元数据治理体系与项目准入校验架构设计
  • 第一章Netty,Selector写入内容过多问题
  • 4-20mA电流环接收器设计与STM32高精度ADC实现
  • .net环境下跨进程、高频率读写数据
  • Windows系统文件AutomaticAppSignInPolicy.dll丢失找不到问题解决
  • React Native 0.86 亮点速览:边到边修复、DevTools 深色模拟、JSI 再增强
  • 技术人转型项目管理:30岁前后如何用PMP完成思维切换
  • 当下游master被污染后,如何与上游master进行同步
  • 计算机Java毕设实战-基于 SpringBoot 的中小学学生德育行为考评系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 科研选题不再受限于抗体缺货,云克隆全链条自研如何支撑百万种衍生资源
  • 免费开源桌面分区神器:5分钟彻底告别杂乱Windows桌面
  • Docker容器的跨节点通信
  • Linux基础文件与目录实操学习笔记
  • 塞尔达传说:旷野之息存档编辑器终极指南 - 5分钟掌握海拉鲁世界修改秘籍
  • 云手机技术详解:原理、自动化 API 实战代码与商用选型指南
  • 说明Svcb到外部服务的通信被打通了!
  • 【毕业设计】基于 SpringBoot 的学生日常表现评分登记管理系统的设计与实现 基于 SpringBoot 的中小学行为规范考核管理系统(源码+文档+远程调试,全bao定制等)
  • 返回主页I WOULD NEVER DIE FOR MY BELIEFS BECAUSE I MIGHT BE WRONG
  • 机器学习模型生产就绪:从Notebook到高可用服务的系统化实践
  • 临床AI风险分层模型:从电子病历挖掘生存期预测信号
  • 让AI读懂你的企业:云境标书AI在招投标场景下RAG与知识图谱的工程实践
  • 3分钟掌握OFD转PDF:免费开源工具Ofd2Pdf完全指南
  • Claude 实战: AI 自动帮你“加班“:/loop 完全指南
  • 职场人迈入 35 岁别再盲目内卷!提前做好职业长期布局规划,避开中年危机实现稳步增值