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

P5311 [Ynoi2011] 成都七中

题目描述

给你一棵 nnn 个节点的树,每个节点有一种颜色,有 mmm 次查询操作。

查询操作给定参数 lrxl\ r\ xl r x,需输出:

将树中编号在 [l,r][l,r][l,r] 内的所有节点保留,xxx 所在连通块中颜色种类数。

每次查询操作独立。

对于 100%100\%100% 的数据,所有出现过的数在 [1,105][1,10^5][1,105] 之间,保证每次输入的 l≤x≤rl \le x \le rlxr

题解

建出点分树,可以发现这样一个性质,对于树上任意一个连通块,一定有一个连通块上的点,在点分树该点的子树中包含连通块的所有点
那么对于每个询问中的xxx,我们找到它在点分树上一个深度最低的祖先vvv,满足vvvxxx可以通过[l,r][l,r][l,r]之间的点连通,那么问题就变成了求vvv所在连通块中颜色种类数,连通块只会在vvv的点分树子树内,这就变得很好做,一个点和vvv是否连通可以求出它到vvv的编号最小值min⁡\minmin和最大值max⁡\maxmax,它与vvv连通当且仅当l≤min⁡,max⁡≤rl\le\min,\max\le rlmin,maxr,二维数点即可

code\text{code}code

#include<cstdio>
#include<algorithm>
using namespace std;
void read(int &res)
{res=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();while('0'<=ch&&ch<='9') res=(res<<1)+(res<<3)+(ch^48),ch=getchar();
}
const int N=2e5+100;
int n,q,a[N+10],st[N+10],tot;
struct edge
{int to,last;
}e[N<<1|1];
void add(int a,int b)
{e[++tot].to=b;e[tot].last=st[a];st[a]=tot;
}
struct node
{int l,r,id;
};
vector<node> p[N+10];
int rt,siz[N+10],sum,ans[N+10];
bool vis[N+10];
void getrt(int u,int fa)
{siz[u]=1;int maxn=0;for(int i=st[u],v;i!=0;i=e[i].last){v=e[i].to;if(v==fa||vis[v]) continue;getrt(v,u),siz[u]+=siz[v],maxn=max(maxn,siz[v]);}maxn=max(maxn,sum-siz[u]);if((maxn<<1)<=sum) rt=u;
}
int cnt;
struct qst
{int id,l,r,co;
}g[N+10];
bool cmp(qst a,qst b){return a.l>b.l||(a.l==b.l&&a.r<b.r||a.l==b.l&&a.r==b.r&&a.id<b.id);}
int pre[N+10];
void dfs(int u,int minn,int maxn,int fa)
{minn=min(minn,u),maxn=max(maxn,u);g[++cnt]=(qst){0,minn,maxn,a[u]};for(auto v:p[u])if(v.l<=minn&&maxn<=v.r&&!ans[v.id])g[++cnt]=(qst){v.id,v.l,v.r,0};for(int i=st[u],v;i!=0;i=e[i].last){v=e[i].to;if(v==fa||vis[v]) continue;dfs(v,minn,maxn,u);}
}
struct Tree
{int t[N+10];int lowbit(int x){return x&-x;}void update(int x,int k){for(;x<=N;x+=lowbit(x))t[x]+=k;}int query(int x){int res=0;for(;x;x-=lowbit(x)) res+=t[x];return res;}
}t;
void solve(int u)
{getrt(u,0),sum=siz[u],getrt(u,0),u=rt;cnt=0;dfs(u,N,0,0);sort(g+1,g+1+cnt,cmp);for(int i=1;i<=cnt;i++){if(g[i].id==0){if(!pre[g[i].co]) t.update(g[i].r,1),pre[g[i].co]=g[i].r;else{if(g[i].r<pre[g[i].co])t.update(pre[g[i].co],-1),t.update(g[i].r,1),pre[g[i].co]=g[i].r;}}else ans[g[i].id]=t.query(g[i].r);}for(int i=1;i<=cnt;i++)if(g[i].id==0&&pre[g[i].co])t.update(pre[g[i].co],-1),pre[g[i].co]=0;vis[u]=true;for(int i=st[u],v;i!=0;i=e[i].last){v=e[i].to;if(vis[v]) continue;solve(v);}
}
int main()
{
//	freopen("a.in","r",stdin);read(n),read(q);for(int i=1;i<=n;i++) read(a[i]);for(int i=1,a,b;i<n;i++) read(a),read(b),add(a,b),add(b,a);for(int i=1,l,r,x;i<=q;i++) read(l),read(r),read(x),p[x].push_back({l,r,i});solve(1);for(int i=1;i<=q;i++) printf("%d\n",ans[i]);return 0;
}

相关文章:

P5311 [Ynoi2011] 成都七中

题目描述 给你一棵 nnn 个节点的树&#xff0c;每个节点有一种颜色&#xff0c;有 mmm 次查询操作。 查询操作给定参数 lrxl\ r\ xl r x&#xff0c;需输出&#xff1a; 将树中编号在 [l,r][l,r][l,r] 内的所有节点保留&#xff0c;xxx 所在连通块中颜色种类数。 每次查询操…...

Python 日期和时间格式

Python 程序能用很多方式处理日期和时间&#xff0c;转换日期格式是一个常见的功能。Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜&#xff08;历元&#xff09;经过了多长时间来表…...

电脑和手机的软件推荐

安卓软件 jota text 记事本 x浏览器 &#xff08;支持禁js&#xff0c;支持嗅探 视频 音频&#xff09; __ 空缺 暂未能发现好用的office软件 snapseed图片调整 可谓手机界的photoshop vidtrim视频剪辑 librera reader &#xff08;无广告 电子书软件 但是发音很差 lithum或者…...

酸回收树脂的应用

酸洗废水 在轧钢、金属表面处理、电子元件制造等过程中需要清除钢材表面氧化铁皮而使用酸进行酸洗&#xff0c;酸洗过程中会产生废酸液和酸洗废水。 这些废酸产量大、酸度高&#xff0c;而且由于酸洗废水来自钢铁和金属表面处理的清洗水&#xff0c;水中含有多种重金属离子&am…...

windows上配置IIS全过程

文章目录1️⃣ 配置IIS1.1 从开始打开服务器管理1.2 添加角色和功能1.3 添加角色和功能向导1.4 按照如下步骤选择2️⃣ 问题&#xff1a;缺少源文件解决方案优质资源分享作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…...

软考高级信息系统项目管理师系列之十三:项目成本管理

软考高级信息系统项目管理师系列之十三:项目成本管理 一、成本管理领域输入、输出、工具和技术表二、成本管理基础知识点1.成本类型2.应急储备和管理储备3.成本基准三、项目成本管理过程1.项目成本管理的过程2.成本管理计划3.项目成本估算的主要步骤4.活动成本估算5.项目预算6…...

HIVE 基础(一)

目录 启动hive 方式一 方式二 修改hdfs上给定文件执行的读写权限 创建数据库 查看数据库 查看数据库详细信息 查看当前数据库 创建表 查看建表语句 查看表信息 删除表 添加数据 查看表数据 删除数据库 强制删除数据库 启动hive 方式一 [roothadoop1 ~]# hive 方…...

《狂飙》壁纸太帅,Python自动切换太酷(8)

小朋友们好&#xff0c;大朋友们好&#xff01;我是猫妹&#xff01;要说最近什么电视剧最火&#xff1f;非《狂飙》莫属。《狂飙》剧名来自毛主席诗词“国际悲歌歌一曲&#xff0c;狂飙为我从天落”。导演借用“狂飙”二字来比喻剧中的扫黑除恶大风暴。据了解&#xff0c;《狂…...

博客排名的影响是什么? 说明优点、注册方法和推荐网站

如果您经营博客&#xff0c;您是否在博客排名网站上注册&#xff1f;博客排名网站是以排名格式介绍各种注册博客的网站。如果您注册博客&#xff0c;您将有更多机会被人们看到&#xff0c;并且可以期望增加访问权限。对于那些刚刚打开博客并担心访问量不会轻易增加的人来说&…...

全流程GMS地下水数值模拟技能培养及溶质运移反应问题深度解析实践技术

本次综合前期多次学习的效果及重点关注环节&#xff0c;系统性呈现地下水数值模拟软件GMS建模方法同时&#xff0c;建立与实践项目过程中的重点问题相融合&#xff0c;在教学中不仅强调学习三维地质结构建模、水文地质模型概化、边界条件设定、参数反演和模型校核等关键环节&am…...

【软件架构设计】SOA/软件架构设计---面向服务的架构(SOA详细解释)

文章目录面向服务的架构SOA 概述1. 服务的基本结构2.SOA 设计原则3. 服务构件与传统构件SOA 的关键技术1. UDDI2.WSDL3.SOAP4.RESTSOA 的实现方法1.Web Service2. 服务注册表3. 企业服务总线微服务1.微服务的优势2. 微服务面临的挑战3.微服务与 SOA面向服务的架构 迄今为止&am…...

erupt框架Ueditor富文本编辑器图片上传出现405异常

最近在研究erupt框架(v1.11.2),当字段使用Ueditor富文本编辑器,在图片上传的时候出现405异常,接口不支持POST请求方式: 根据错误提示找到对应的源码,发现Handler方法只支持GET请求,而图片上传的时候是以POST方式发起请求的; 此时需要修改源码,用自定义的类覆盖jar包中同名的…...

FILE文件操作

文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区&#xff0c;用来存放文件的相关信息&#xff08;如文件的名 字&#xff0c;文件状态及文件当前的位置等&#xff09;。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的&#xff0c;取名FILE…...

SAP PP工单确认完成(CNF)状态取消方法

这SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法 工单完工后取消了其中的一个报工&#xff0c;然后无法再报工 此时再报工&#xff0c;系…...

Python 采集 筷 实现视频批量保存

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 刷到的视频怕它下架&#xff1f;我们来采集保存一下它 知识点: 动态数据抓包 requests发送请求 json数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip install requests 代码展示 需…...

关于linux下环境配置遇到的坑

1、输入终端命令和vi时&#xff0c;一定要确认是英文输入法&#xff01; 比如中英文输入下的短杠号“-”是不同的&#xff0c;虽然看起来一样。如果是中文输入法下输入含有短杠号的命令&#xff0c;会导致很多意料之外的错误。比如在用sudo ln -s 创建软连接时&#xff0c;会提…...

【Azure 架构师学习笔记】-Azure Logic Apps(7)- 自定义Logic Apps 调度

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps&#xff08;6&#xff09;- Logic Apps调用ADF 前言 在稍微了解Logic Apps的使用之后&#xff0c;需要开始考虑如何调度起来。在Logic Apps里面…...

ubuntu20.04配置UR机械臂的仿真环境

ubuntu20.04配置UR机械臂的仿真环境 参考链接 1. 首先安装好ROS ubuntu20.04安装Noetic版本的ros&#xff0c;具体安装可见之前写的博客 2. 配置UR机械臂仿真工具包 找一个你喜欢的地方创建ros工作空间&#xff08;也就是找个文件夹放ros的包&#xff0c;然后编译运行&…...

雅利安人覆灭了世界三大文明,为何单单在商朝被斩首两万?

转自&#xff1a;雅利安人覆灭了世界三大文明&#xff0c;为何单单在商朝被斩首两万&#xff1f; (baidu.com)在公元前3000年至1000年的广大时间内&#xff0c;是世界四大文明古国大放光彩的时候&#xff0c;古印度文明、古巴比伦文明、古埃及文明以及我们的古华夏&#xff0c;…...

Windows 系统上查询 GPU / CPU 对 Vulkan 的支持信息

Windows 系统上查询 GPU / CPU 对 Vulkan 的支持信息1. TechPowerUp GPU-Z https://www.techpowerup.com/gpuz/ GPU-Z is a lightweight system utility designed to provide vital information about your video card and graphics processor. GPU-Z 是一款显卡识别工具&…...

FFXIV国际服中文补丁解决方案:零基础上手实战指南

FFXIV国际服中文补丁解决方案&#xff1a;零基础上手实战指南 【免费下载链接】FFXIVChnTextPatch 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIVChnTextPatch 你是否曾在《最终幻想XIV》国际服中因语言障碍错失关键剧情&#xff1f;是否因英文界面降低了游戏沉浸…...

告别丑陋代码块!用PyQt5+pygments实现Word代码高亮粘贴(附完整源码)

告别丑陋代码块&#xff01;用PyQt5pygments实现Word代码高亮粘贴&#xff08;附完整源码&#xff09; 在技术文档编写过程中&#xff0c;代码展示是不可或缺的部分。然而&#xff0c;直接将IDE中的代码复制到Word文档时&#xff0c;往往会丢失原有的高亮和格式&#xff0c;变成…...

自动驾驶之心实习生招募|上海线下,一起做点真东西

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 戳我-> 领取自动驾驶近30个方向学习路线 自动驾驶之心是业内头部的垂类自媒体平台&#xff0c;过去一年&#xff0c;我们梳理了端到端、VLA、世界模型、强化学习等前沿方向的最新进展&#xff0c;也分享了行业概况、融资…...

Midscene.js终极指南:3步让AI帮你自动操作任何界面

Midscene.js终极指南&#xff1a;3步让AI帮你自动操作任何界面 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene.js是一个AI驱动的跨平台自动化工具&#xff0c;让你用自然语言就能控…...

高效批处理:一键复制文件/文件夹至当前目录所有子文件夹

1. 为什么需要批量复制文件到子文件夹&#xff1f; 在日常工作中&#xff0c;我经常遇到这样的场景&#xff1a;需要把一个重要文件快速分发到几十甚至上百个子文件夹中。比如给每个项目文件夹添加一份新的规范文档&#xff0c;或者为所有客户目录更新同一份合同模板。手动操作…...

从零开始:OCAT图形化配置工具让OpenCore黑苹果安装变得简单

从零开始&#xff1a;OCAT图形化配置工具让OpenCore黑苹果安装变得简单 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore&#xff08;OCAT&#xff09; 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 还在为复杂的…...

小米多看电纸书刷机全攻略:从墨案系统回退到原厂固件的保姆级教程

小米多看电纸书系统恢复指南&#xff1a;从第三方固件回归官方体验 作为一名长期使用电子墨水设备的深度用户&#xff0c;我完全理解那种尝试新系统后又怀念原厂体验的矛盾心理。去年冬天&#xff0c;我的小米多看电纸书也经历了从墨案系统回退到官方固件的完整过程&#xff0c…...

3个关键技巧彻底解决Photoshop WebP格式兼容性问题

3个关键技巧彻底解决Photoshop WebP格式兼容性问题 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 在当今Web开发与设计领域&#xff0c;WebP格式已成为图像优化的黄金标准&am…...

3D打印键帽革命:如何用开源模型实现机械键盘的个性化定制

3D打印键帽革命&#xff1a;如何用开源模型实现机械键盘的个性化定制 【免费下载链接】cherry-mx-keycaps 3D models of Chery MX keycaps 项目地址: https://gitcode.com/gh_mirrors/ch/cherry-mx-keycaps 机械键盘爱好者们是否曾为寻找完美键帽而苦恼&#xff1f;传统…...

高效利用CompactGUI社区协作:释放游戏压缩数据价值的全方位指南

高效利用CompactGUI社区协作&#xff1a;释放游戏压缩数据价值的全方位指南 【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI 在数字游戏时代&#xf…...