尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

洛谷-P11403 [RMI 2020] 软盘 / Floppy 题解
📅 发布时间:2026/7/2 5:16:35

注意到,区间最值可以转化成笛卡尔树上 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;
}

相关新闻

  • Java Stream、File与IO-核心场景实战
  • 4-20mA电流环接收器设计与STM32高精度ADC实现
  • 当下游master被污染后,如何与上游master进行同步

最新新闻

  • IAP升级方案
  • OptiStruct自从有了NVHD,整车NVH分析so easy
  • AI + 智能客服系统完整设计方案
  • ONNX模型解析与优化实战指南
  • 电子系统散热管理:从芯片级到系统级的优化策略
  • 2026进口闸阀品牌排行榜

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号