一些题解

news/2025/10/23 22:18:12/文章来源:https://www.cnblogs.com/benscode/p/19161778

G
树上DFS + set启发式合并

题意:

给定一棵树和一个排列p , 给定若干次询问 每次询问给出l,r,x
求是否p[l]~p[r]有一个结点的祖先是x

思路:

不妨做个映射,把每个结点的编号映射为它在排列中的下标
那么转化为求x的子树中是否有l~r结点存在
考虑怎么判断:
对于给定的l,r,x ,若知道x的子树结点的集合,那么只需二分判断是否存在>=l并且<=r的元素存在即可

我们做一个DFS , 每次找出每个结点的重儿子,先将它的set转移而非合并到此节点的set中,其他节点的set暴力合并即可

复杂度O(n(logn)^2)

void solve(){int n,q;cin>>n>>q;vector<pii>edge;rep(i,1,n-1){int u,v;cin>>u>>v;edge.pb({u,v});}vector<int>p(n+1);vector<vector<pair<pii,int>>>qr(n+1);rep(i,1,n){int x;cin>>x;p[x]=i;}rep(i,1,q){int l,r,x;cin>>l>>r>>x;qr[p[x]].pb({{l,r},i});}vector<set<int>>s(n+1);vector<vector<int>>e(n+1);vector<int>ans(q+1,0);for(auto[l,r]:edge){e[p[l]].pb(p[r]);e[p[r]].pb(p[l]);}auto dfs =[&](auto&&self,int u,int fa)->void{int h=u;for(int v:e[u]){if(v==fa)continue;self(self,v,u);if(s[v].size()>s[h].size())h=v;}if(h!=u)swap(s[u],s[h]);s[u].insert(u);for(int v:e[u]){if(v==fa||v==h)continue;s[u].insert(s[v].begin(),s[v].end());}for(auto[PII,idx]:qr[u]){auto[l,r]=PII;auto px = s[u].lower_bound(l);if(px!=s[u].end() && (*px)<=r)ans[idx]=1;}};dfs(dfs,p[1],p[1]);rep(i,1,q){if(ans[i]==1)cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek的“认知提纯”能力解析

https://chat.deepseek.com/share/bh35f7zdptjblb4skr你别拍马屁和讲废话,好好想想事实是不是这样,我要干货,要辩证中产生的启发啧,用户直接怼我了,嫌我前面回答太虚。ta要干货和辩证启发,不要奉承和废话。看来得…

梦熊知更鸟赛水题题解合集 (两个人的演唱会 使一颗心免于哀伤 空气蛹)

梦熊知更鸟赛水题题解合集 (两个人的演唱会 && 使一颗心免于哀伤 && 空气蛹)前话: 为什么现在才发? 答:因为没打比赛。 为什么要发: 答:因为我是小鸟厨子 知更鸟小姐可爱捏~ 两个人的演唱会: …

CF2154D

给定一棵大小为 \(n\) 的树,需要构造不超过 \(3n\) 条指令(有以下两种,且不能有连续两次 \(2\) 操作),使得一个在 \(1\) 的棋子一定能走到 \(n\)。\(1\),表示棋子会移动到一个和它相邻的节点,没有则不移动。 \(…

Plya 定理学习笔记 | ABC428G 题解

Plya 定理学习笔记 | ABC428G 题解 用来对在若干置换下本质不同的方案数计数。(这里会有一些证明,但是先咕掉((首先是 Burnside 引理: 结论是,假设群 \(G\) 作用于集合 \(X\) 上。 令 \(O_x\) 表示 \(x\in X\) 的…

HTML中的a和img的用法

HTML中标签a的用法HTML的链接用a定义,在第一个尖括号后面用"href="指定,如下例: 《a href="https://www.runoob.com"》 去菜鸟教程 《/a》 (注:尖括号<>用《》代替) 效果:去菜鸟教程 …

并查集(DSU)

基础封装 通常意义上我们默认增加“路径压缩”优化,时间复杂度为:查询 O(1)\mathcal O (1) ,合并接近于 O(α(n))\mathcal O(\alpha(n)) (这里 α\alpha 代表的是反阿克曼函数,一般看作是一个极小的常数)。 stru…

告别繁琐排版!揭秘2025年公众号推文排版top1神器

作为一名深耕新媒体领域8年的老编辑,我亲历了从手动排版到智能编辑的完整进化过程。过去为了一篇推文,光是找素材、调格式就要耗费大半天时间。直到近期测试了多款AI编辑器,才发现原来推文创作可以如此简单高效。 今…

第十八天

今日核心任务是攻克数据结构中的二叉树,整个学习过程更像一场逻辑拆解与规律验证的实践,而非单纯的知识记忆。 上午从定义入手,明确二叉树“每个节点最多拥有两个子树”的核心规则,这一约束让它区别于普通树,也为…

[优先队列] P3611 [USACO17JAN] Cow Dance Show S 题解

神人题。 首先要二分一下\(k\)。然后呢?然后就不会了。 查看题解仔细思考后,发现模拟就行了。 开一个堆,把前 \(k\) 个牛放进去。 然后对于后面的牛,你每次把堆顶的牛拿出来,然后把后面的牛放进去。由于要等到堆顶…

搜维尔科技将携手Xsens|Haption|Tesollo|Manus亮相IROS 2025国际智能机器人与系统会议

展会预告 | IROS 2025 杭州见! IROS 2025将于10月21-23日在杭州国际博览中心举行。我司将携手Xsens新一代Link(动作捕捉系统)、Haption触觉力反馈遥操作系统、Manus数据手套与Tesollo灵巧手亮相展会,期待与各位产学…

leetcode1. 两数之和、15. 三数之和、18. 四数之和

leetcode1. 两数之和、15. 三数之和、18. 四数之和1. 两数之和 注意,这个要返回的是对应数字的下标。 2022/09的C++代码class Solution { public:vector<int> twoSum(vector<int>& nums, int target…

第十七天

今日核心任务是攻克数据结构中的二叉树,整个学习过程更像一场逻辑拆解与规律验证的实践,而非单纯的知识记忆。 从定义入手,明确二叉树“每个节点最多拥有两个子树”的核心规则,这一约束让它区别于普通树,也为后续…

vue3+elementPlus el-date-picker 自定义禁用状态hook 建立结束时间不能小于开始时间

vue3+elementPlus el-date-picker 自定义禁用状态hook 建立结束时间不能小于开始时间pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

66页实验题

import tensorflow as tf from tensorflow.keras.datasets import cifar10 1. 加载并预处理 CIFAR-10 数据集 (x_train, y_train), (x_test, y_test) = cifar10.load_data() 像素值归一化(0-255 → 0-1) x_train = x…

简单云计算算法--20251023

简单云计算算法--2025/10/23 No.1 LCR 158. 库存管理 II 仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。 示例 1: 输入:st…

处理空输入踩的坑

处理一个外部传入的用户输入的时候,一开始只想着处理null,用"?.let{}"的模式处理。结果发现结果异常。 打断点发现传入值不是空,而是"" 由此发现kotlin处理空string的两个函数: isEmpty() Th…

【做题记录】贪心--提高组

A. Monotone Subsequence 有点 Ad-hoc。 第 \(i\) 次查询,直接询问当前未被删去的所有点。如果回答 \(\ge n+1\),那么直接输出;否则将回答的这些点标一个级别 \(i\)。最后一次询问之后还剩下的标为 \(n+1\)。根据鸽…

latex输入公式

输入不换行公式:点击查看代码 \begin{equation}\label{eq:2}u_{exact} = \sin(x) - \frac{1}{4} \sin(4x) + \frac{1}{8} \sin(8x) - \frac{1}{16} \sin(16x) + \frac{1}{24} \sin(24x) - \frac{1}{48} \sin(48x) + …

【为美好CTF献上祝福】 New Star 2025 逆向笔记

Re Week1 Strange Base 乍一看是个正常的 base64 加密点进 base64 函数一看,发现 base64 的表被换了。