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

~Rikka with Employees~ stcm

Rikka with Employees

这题好像有个哥哥叫 [Ynoi2008] stcm 来着,看起来应该比这题的限制更严。


考虑将树拍成 dfn 序,则 \(u\) 对应的子树为 \([\text{dfn}(u),\text{dfn}(u)+\text{size}(u)-1]\)。进行分治,假设分治到 \([l,r]\) 时,标记了 \([1,l-1] \cup [r+1,n]\) 中的所有点,此时我们要处理跨过 \(mid\) 的所有询问。

由于树存在偏序关系,所以跨过 \(mid\) 的询问也存在偏序关系,依次处理即可。

下面是 stcm 的代码:

//Ad astra per aspera
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int fa[100010],dfn[100010],rev[100010],siz[100010],tot;
vector<int> G[100010];
void dfs(int u){tot++;dfn[u]=tot;rev[tot]=u;siz[u]=1;for(int i=0;i<G[u].size();i++){int v=G[u][i];dfs(v);siz[u]+=siz[v];}
}
struct Node{int l,r,id;
};
bool operator <(const Node &lhs,const Node &rhs){return lhs.l<rhs.l;
}
void solve(int l,int r,vector<Node> vec){if(vec.empty()){return ;}if(l==r){printf("=%d",vec[0].id);return ;}int l_mid=(l+r)>>1;int r_mid=l_mid+1;vector<Node> l_vec,r_vec,m_vec;for(int i=0;i<vec.size();i++){if(vec[i].r<=l_mid){l_vec.push_back(vec[i]);}else if(vec[i].l>=r_mid){r_vec.push_back(vec[i]);}else{m_vec.push_back(vec[i]);}}sort(m_vec.begin(),m_vec.end());int l_pre=l-1,r_pre=r+1;for(int i=0;i<m_vec.size();i++){int L=m_vec[i].l,R=m_vec[i].r,id=m_vec[i].id;while(l_pre<L-1){l_pre++;printf("+%d",rev[l_pre]);}while(r_pre>R+1){r_pre--;printf("+%d",rev[r_pre]);}printf("=%d",id);}while(l_pre>=l){printf("-");l_pre--;}while(r_pre<=r){printf("-");r_pre++;}while(l_pre<l_mid){l_pre++;printf("+%d",rev[l_pre]);}solve(r_mid,r,r_vec);while(l_pre>=l){printf("-");l_pre--;}while(r_pre>r_mid){r_pre--;printf("+%d",rev[r_pre]);}solve(l,l_mid,l_vec);while(r_pre<=r){printf("-");r_pre++;}
}
int main(){int n;while(~scanf("%d",&n)){tot=0;for(int i=1;i<=n;i++){G[i].clear();}for(int i=2;i<=n;i++){scanf("%d",&fa[i]);G[fa[i]].push_back(i);}dfs(1);vector<Node> vec;for(int i=1;i<=n;i++){vec.push_back((Node){dfn[i],dfn[i]+siz[i]-1,i});}solve(1,n,vec);printf("!\n");}return 0;
}
http://www.jsqmd.com/news/994470/

相关文章:

  • yml文件介绍
  • LDO 啸叫怎么来的?别只换电容,看看环路稳定性与 ESR
  • Diablo Edit2:暗黑破坏神2终极角色编辑与存档修改完全指南
  • 2026苏州网站建设公司排名:企业官网、营销型网站、GEO网站怎么选?
  • 一文搞定ChIP-seq对照重复设计
  • 深耕家用电梯15载,以质立足.以信致远—济南华瑞丰升降机械有限公司企业介绍 - 信息热点
  • 手把手教你用C++实现两阶段单纯形算法(附完整代码与避坑指南)
  • 2026上海市家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!本地防水补漏公司为您排忧解难!质保可查、售后无忧。 - 企业资讯
  • MPK5蛋白在植物逆境响应中的分子机制与研究进展
  • 各朝代茶马古道路线矢量数据,穿越千年的数字古道
  • 终极无损音乐下载指南:qobuz-dl带你轻松获取24位/96kHz高解析度音频
  • 2026一物一码厂商技术选型推荐|商品全链路溯源系统架构与落地解析
  • html2pdf.js 技术深度解析:纯客户端HTML转PDF渲染引擎的架构设计与实现
  • MCP2517FD CAN FD控制器完整开发套件:固件+DBC+OLS逻辑分析配置一键导入
  • 2026苏州小程序开发公司推荐:商城、预约、会员小程序怎么选?
  • Spring容器结构(快速说明)
  • 2026各行业人士学习数据分析的价值
  • 深入解析USB设备控制器:从SIE到BDT的数据传输机制
  • 4 大 AI 研究员组队搞科研!Codex、Claude Code、OpenClaw、Hermes四位“AI研究员“组成的可迭代、可迁移的科研协作团队
  • N46Whisper:基于AI的日语视频字幕生成完整指南
  • 2026广州债权债务律所TOP4深度测评|湾区商事维权甄选指南:货款催收合同处置股权调处强制执行涉外纠纷维权攻略 - 信息热点
  • 2026 OpenClaw+CC Switch+Token173 国内稳定部署 Anthropic Fable 5 完整实操教程
  • 探索Roboto字体:如何构建Android和Chrome OS的默认字体系统
  • 终极GTA5辅助工具:YimMenu完整指南与安全实践
  • 钉钉ONE溃败根源:AI沦为组织焦虑放大器,悟空接棒能否破局?
  • 洛雪音乐音源终极配置指南:免费获取全网无损音乐的完整方案
  • 西安装修公司口碑盘点2026:选对品牌少踩3个坑 - 信息热点
  • 2026无锡代理记账公司靠谱排名,这些推荐榜上有名 - 信息热点
  • 别再死记硬背LSTM公式了!用PyTorch手把手拆解输入门、遗忘门和输出门(附代码)
  • Navicat重置试用期终极指南:Mac版无限免费使用教程