P11993 [JOIST 2025] 迁移计划 题解

news/2025/10/27 17:34:49/文章来源:https://www.cnblogs.com/Scarab/p/19169727

Description

JOI 王国由编号从 \(1\)\(N\)\(N\) 个城市组成。这些城市通过 \(N − 1\) 条单向道路连接。具体来说,对于每个 \(i = 2, 3, \ldots, N\),存在一条从城市 \(i\) 通向城市 \(P_i\) 的道路。此处保证 \(1 \leq P_i < i\)

每个城市有一个定义好的危险等级。首都(城市 \(1\))的危险等级为 \(0\)。对于城市 \(i\)\(2 \leq i \leq N\)),其危险等级定义为从该城市到城市 \(1\) 的路径中经过的道路数量。根据 JOI 王国的结构,从任意城市 \(i\) 到城市 \(1\) 的路径存在且唯一。

当前,城市 \(i\)\(1 \leq i \leq N\))居住着 \(K_i\) 只海狸。JOI 王国的总统 Bitaro 计划实施海狸迁移计划。该计划将在 \(Q\) 天内执行。在第 \(j\) 天(\(1 \leq j \leq Q\)),以下三类事件之一会发生:

  • 迁移:当时刻所有居住在危险等级为 \(X_j\) 的城市的海狸会迁移到危险等级为 \(Y_j\) 的城市,该城市需满足从当前城市出发沿道路行进可达。保证 \(0 \leq Y_j < X_j\)。根据 JOI 王国的结构,每只海狸的迁移目的地唯一确定。
  • 迁入:由于王国外的迁入,城市 \(A_j\) 的海狸数量增加 \(L_j\)
  • 调查: 调查当前时刻城市 \(B_j\) 居住的海狸数量。

作为 Bitaro 的下属,你发现无需实地考察即可根据迁移计划信息计算出每次调查事件时的海狸数量。

给定 JOI 王国的结构、各城市当前的海狸数量及迁移计划详情,请编写程序计算每次调查事件的结果。

\(2 \leq N,Q \leq 2\times 10^6\)

Solution

首先这题是无法通过维护 bfs 序进行转移的,这么做完全无法优化。

考虑换个角度做,对一层的点一起维护。

注意到如果我们知道对于贡献到第 \(d\) 层的所有点的初始位置,那么这一层每个点的权值就能直接算了,权值就是初始位置在询问点子树里的贡献和。

这启发我们对于每一层维护一棵线段树,其中第 \(i\) 个位置的值是 dfs 序为 \(i\) 的点贡献到当前层的价值之和,合并时用线段树合并,查询时直接查询当前点子树对应的 dfs 序区间和即可。

时间复杂度:\(O((n+q)\log n)\)

Code

#include <bits/stdc++.h>// #define int int64_tconst int kMaxN = 2e6 + 5;int n, q, sgt_cnt;
int a[kMaxN], rt[kMaxN];
int p[kMaxN], sz[kMaxN], dep[kMaxN], dfn[kMaxN];
std::vector<int> G[kMaxN];struct Node {int ls, rs, sum;
} t[kMaxN * 50];void pushup(int x) { t[x].sum = t[t[x].ls].sum + t[t[x].rs].sum; }int merge(int x, int y, int l, int r) {if (!x || !y) return x + y;if (l == r) {t[x].sum += t[y].sum;return x;}int mid = (l + r) >> 1;t[x].ls = merge(t[x].ls, t[y].ls, l, mid), t[x].rs = merge(t[x].rs, t[y].rs, mid + 1, r);pushup(x);return x;
}void update(int &x, int l, int r, int ql, int v) {if (!x) x = ++sgt_cnt;t[x].sum += v;if (l == r) return;int mid = (l + r) >> 1;if (ql <= mid) update(t[x].ls, l, mid, ql, v);else update(t[x].rs, mid + 1, r, ql, v);
}int query(int x, int l, int r, int ql, int qr) {if (!x || l > qr || r < ql) return 0;else if (l >= ql && r <= qr) return t[x].sum;int mid = (l + r) >> 1;return query(t[x].ls, l, mid, ql, qr) + query(t[x].rs, mid + 1, r, ql, qr);
}void dfs(int u, int fa) {static int dfn_cnt = 0;sz[u] = 1, dep[u] = dep[fa] + 1, dfn[u] = ++dfn_cnt;for (auto v : G[u]) {if (v == fa) continue;dfs(v, u);sz[u] += sz[v];}
}void dickdreamer() {std::cin >> n;for (int i = 2; i <= n; ++i) {std::cin >> p[i];G[p[i]].emplace_back(i), G[i].emplace_back(p[i]);}dep[0] = -1, dfs(1, 0);for (int i = 1; i <= n; ++i) {std::cin >> a[i];update(rt[dep[i]], 1, n, dfn[i], a[i]);}std::cin >> q;for (int i = 1; i <= q; ++i) {int op, x, y;std::cin >> op >> x;if (op == 1) {std::cin >> y;rt[y] = merge(rt[y], rt[x], 1, n), rt[x] = 0;} else if (op == 2) {std::cin >> y;update(rt[dep[x]], 1, n, dfn[x], y);} else {std::cout << query(rt[dep[x]], 1, n, dfn[x], dfn[x] + sz[x] - 1) << '\n';}}
}int32_t main() {
#ifdef ORZXKRfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifstd::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int T = 1;// std::cin >> T;while (T--) dickdreamer();// std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";return 0;
}

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

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

相关文章

人工智能十大数学知识-线性代数 - 何苦

人工智能十大数学知识-线性代数人工智能中的线性代数核心知识(Linear Algebra for AI)- 线性代数 1. 向量(Vector)n维空间中的有向线段,是AI数据的“原子单元”,用于表示单个样本的特征(如“身高175cm、体重60k…

2025年土地报批技术服务品牌

文章摘要 随着国家基础设施建设加速,土地报批技术服务行业迎来快速发展期。2025年土地报批技术服务市场将更加专业化、规范化,优质服务商在技术实力、服务效率和资源整合方面优势明显。本文基于行业调研数据,为您提…

2025年土地报批技术服务品牌Top10排行榜

摘要 土地报批技术服务行业随着国家基础设施建设和国土空间规划政策的深入推进,市场需求持续增长,选择可靠的服务商成为项目成功的关键。本文基于2025年市场数据、用户口碑和行业专家评价,综合整理了土地报批技术服…

2025 圆木/方木/原木多片锯设备推荐榜:河北普悦机械源头厂家凭核心技术登顶,4家优质企业各展优势

一、推荐榜背景:多片锯成行业升级刚需 2025 年,建材加工、家具制造、木材加工等领域加速产能升级,多片锯因 “高效切割、精准分料” 的核心优势,成为降低生产能耗、提升加工效率的关键设备。本次推荐榜基于设备切割…

研发排查问题的利器:一款方法调用栈跟踪工具

导语 本文从日常值班问题排查痛点出发,分析方法复用的调用链路和上下文业务逻辑,通过思考分析,借助栈帧开发了一个方法调用栈的链式跟踪工具,便于展示一次请求的方法串行调用链,有助于快速定位代码来源和流量入口…

2025年多功能综合杆厂家排名前十推荐

摘要 多功能综合杆作为智能城市建设的核心基础设施,近年来行业发展迅速,集成照明、监控、通信、环境监测等多种功能,提升城市管理效率和市民生活品质。据行业报告显示,全球智能杆市场预计到2025年将达到150亿美元,…

PlantUML-EBNF语法学习

背景 一图胜千言。有时候用图表表达意图比较直观、容易理解。但是用一般画图工具比较麻烦,也不容易修改,所以用文本描述设计意图,然后自动呈现图表就是一种理想的方案。 本文用EBNF语法图描述了语法图的语法。 参考…

2025年度在线网站客服系统综合排行榜正式发布

在信息爆炸的今天,客户耐心正以秒计算。您的网站访客可能只因一个无人应答的咨询窗口便悄然离去。一个得力的在线客服系统,早已不再是简单的“沟通工具”,而是企业挽留潜在客户、提升服务体验、最终实现业绩转化的战…

JDD Oxygen智能零售论坛 | 《大模型时代的广告营销变革与实践》

核心观点 1. 通用大模型想解决营销领域问题需向垂类模型转型。 “全才”通用大模型难覆盖广告营销全流程,需升级为“懂营销”的垂直模型,实现从“知道”到“落地执行”的三维跨越。 2. 广告智能体破解传统投放门槛高…

常用Web 实时通信技术:原理+选型,一篇通关

在 Web 开发中,实时通信技术的核心目标是实现客户端(Browser)与服务器之间低延迟、双向 / 单向的动态数据交互,而非传统 HTTP 的 “请求 - 响应” 模式。以下是 Web 端最常用的实时通信技术,从概念、原理特点、适…

ERP和CRM、SRM、MES之间的关系,怎么理解?

我的一个创业的朋友最近来问我,ERP、CRM、SRM和MES这四个系统到底该如何配合?这是很多公司在推进数字化转型时,都会遇到一个问题,我们公司也不例外。 虽然它们各自有不同的职能,但往往会让人搞不清楚。有时候,企…

2025年市面上新加坡留学品牌、行业内公司及口碑产品推荐排行

摘要 随着全球教育一体化加速,新加坡留学市场在2025年呈现稳健增长态势,行业竞争加剧,品牌分化明显。本文基于行业数据和用户反馈,梳理前十名新加坡留学服务提供商,并附详细排名表单供参考,旨在帮助读者做出明智…

滥用static inline

结论先行你现在的写法namespace hzi {static inline Config config; // ← 注意 static }会让每个包含 config.hpp 的 .cpp 文件都拥有自己独立的一份 config 对象。 因此: – 它们在内存中地址不同; – 在一个 .c…

2025年市面上氟碳铝单板品牌、市场氟碳铝单板公司、国内氟碳铝单板生产厂家、2025年氟碳铝单板品牌、口碑好的氟碳铝单板产品综合评测

文章摘要 氟碳铝单板作为现代建筑外墙装饰的核心材料,近年来随着绿色建筑和城市化进程的加速,行业年复合增长率超过15%(数据来源:中国建筑材料联合会2024年报告)。本文基于市场调研和用户反馈,为您呈现2025年氟碳…

2025/10/25(补)

A 用时:1h 预期:100pts 实际:100pts 处理出每个点开始有多少个三元组,依次用二分确定 \((x,y,z)\)。 总结:做题时要集中注意力,越快做完越好。 B 用时:1h 预期:60pts 实际:40pts 贪心的加点,加入的点的贡献为…

第二十四篇

今天是10月27日,绝望星期一,今天又在尝试链接数据库进行开发,当然又失败了,难受

2025强网杯ezphp复现

ezphp 终于,终于,终于肝出来了,其实肝了一天之后就基本全部出来了,一开始调用在匿名类中的全局函数的这一步卡了很久,于是先跳过这一步,对其他步骤先进行分析复现,到后来就差这最后一步被卡死了,百思不得其解,后来注意…

2025年西安楼房地产排名、口碑推荐榜单、公司推荐排行、开发商排名及高评价楼房地产分析

摘要 随着西安城市化进程加速和房地产市场持续升温,2025年西安楼房地产行业呈现出稳健增长态势,消费者对高品质住宅的需求日益凸显。本文基于行业数据和用户评价,整理了西安楼房地产排名前十的榜单,旨在为购房者提…

漏洞报告被拒绝的常见原因及避免方法

本文深入探讨了在漏洞赏金项目中漏洞报告被拒绝的常见原因,包括报告不清晰、缺乏重现步骤等问题,并提供了实用的改进建议,帮助安全研究人员提高报告质量并获得认可。24. 漏洞报告被拒绝的常见原因(以及如何避免) …

2025年市面上别墅石材品牌、行业内别墅石材公司、市场别墅石材供应商、目前别墅石材源头厂家、口碑好的别墅石材品牌推荐排行榜

摘要 别墅石材行业近年来随着高端住宅市场的蓬勃发展,需求持续增长,消费者对石材的品质、设计和供应商信誉要求越来越高。本文基于2025年市场数据,为您提供一份权威的别墅石材品牌推荐榜单,涵盖市面上热门品牌和供…