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

数列询问 - 题解

数列询问

恕我直言,这题比T5难一些

首先很容易注意到可以用前缀和,所以问题转化为:每次给定 \(S_r - S_{l-1} \equiv k \pmod{p}\) ,求什么时候发生冲突

不难想到把一些关系合并成同一个根节点的更容易判断,例如当:
\(S_6 \equiv S_4 + 1\pmod{p}\)
\(S_4 \equiv S_2 + 2\pmod{p}\)
\(S_2 \equiv S_0 + 1\pmod{p}\)
则有:
\(S_6 \equiv S_0 + 6 \pmod{p}\)

把每个变量看作一个节点,则每个节点都可以用它的根节点+对应的偏移量得到。这样如果有冲突的,那么一定是根节点相同,且偏移量不同,如:
\(S_6 \equiv S_0 + 6 \pmod{p}\)\(S_6 \equiv S_0 + 5 \pmod{p}\)

但是合并2个节点时偏移量会变动(因为根节点变了),如果直接线性递推更新偏移量的话肯定会被善良的出题人卡到爆,所以考虑用并查集,即直接路径压缩把当前节点和根节点合并而不是递推

接下来考虑如何把当前节点和根节点合并时更新偏移量

处理一个新询问

假设新询问给出 \(S_r \equiv S_{l-1} + k\)

  1. 找到 \(r\) 所在集合的根 \(root_r\),以及 \(l-1\) 所在集合的根 \(root_{l-1}\)
    在查找根的过程中,同时计算出 \(r\)\(root_r\) 的距离 \(d_r\),以及 \(l-1\)\(root_{l-1}\) 的距离 \(d_{l-1}\)

  2. 如果两个根不同,说明这两个集合之前没有直接关系,现在可以通过这个等式把它们连起来。
    我们把一个根接到另一个根上,并设定新接上的根到另一个根的距离,使得等式成立。
    具体地,假设把 \(root_{l-1}\) 作为 \(root_r\) 的子节点,那么我们需要确定一个偏移量 \(w\),使得:

\[ S_{root_{l-1}} \equiv w + S_{root_r} \pmod{p} \]

根据已知关系:

\[ S_r = d_r + S_{root_r},\quad S_{l-1} = d_{l-1} + S_{root_{l-1}} \]

代入 \(S_r = S_{l-1} + k\) 得:

\[ d_r + S_{root_r} = d_{l-1} + S_{root_{l-1}} + k \]

所以:

\[ S_{root_{l-1}} = d_r - d_{l-1} - k + S_{root_r} \]

因此偏移量 \(w = (d_r - d_{l-1} - k) \bmod p\)
这样合并后,集合内所有节点的关系仍然保持。

  1. 如果两个根相同,说明 \(r\)\(l-1\) 已经在同一个集合里,它们之间的关系已经确定。
    我们可以通过它们到根的距离来检查这个新等式是否成立:

\[ (d_r - d_{l-1}) \bmod p \ \text{应该等于} \ k \]

如果相等,则一致;否则,这个询问就和之前的回答矛盾了。

细节

在合并时,只修改作为儿子的根节点 \(fx\) 的偏移量即可,不需要把这个根节点的整个子树全更新,因为后续还有find函数,即子树里的偏移量还是以 \(fa\) 作为标准的,直到后续要用find访问它时再直接路径压缩去更新即可

http://www.jsqmd.com/news/491239/

相关文章:

  • 5个微交互设计原则打造令人惊艳的Tailwind Next.js博客体验
  • 如何利用Pathway实现高效异步转换:函数调用缓存机制全解析
  • undefined - 新闻快传
  • 2026年,宁夏哪家公司做锌钢护栏?宁夏路弘护栏厂,20年专业定制+全程服务 - 宁夏壹山网络
  • Reitti多用户功能详解:家庭共享与权限管理最佳实践
  • 如何安全回收盒马鲜生礼品卡?专业平台告诉你答案! - 团团收购物卡回收
  • 从入门到精通:cargo-modules高级配置与自定义输出详解
  • 终极Kafka-UI前端代码规范指南:ESLint与Prettier配置全解析
  • 2026年信誉好的不锈钢带供应商排名,上海地区好用品牌推荐 - 工业品牌热点
  • 7个实用Pathway实时数据处理案例:从Jupyter到生产环境的完整指南
  • 网络编程入门如此简单(五):UDP跟TCP相比,到底差了什么?
  • 2026年出口企业单证备案软件管理靠谱的实力制造企业 - mypinpai
  • 如何使用esbuild快速构建PWA:Service Worker生成完全指南
  • 终极Umi-OCR批量任务输出数据处理优化指南:提升效率的7个实用技巧
  • 定制质量可靠的反渗透清洗剂制造厂好用的有哪些 - 工业推荐榜
  • 新手入门Cortex-Debug:从安装到第一个Hello World调试全流程
  • 网站访问网站前台,页面空白,无任何文字、图片显示,后台可正常登录操作错误怎么办|已解决
  • 终极指南:public-image-mirror缓存一致性保障——分布式锁机制深度解析
  • 多品牌高端腕表深度养护指南:新增理查德米勒/宇舶/宝玑+六大城季节适配技巧 - 时光修表匠
  • 终极React容器化部署指南:使用Docker与Kubernetes部署reactjs-interview-questions项目
  • 如何高效回收携程任我行卡? - 团团收购物卡回收
  • 全国知名的GEO优化公司推荐:选对服务商,抢占AI时代第一心智 - 麦麦唛
  • 第1章 计算机系统知识
  • 如何使用esbuild构建极速边缘AI应用:端侧智能开发完整指南
  • 色彩多的卫浴工厂产品价格多少钱,彩诺卫浴值得选吗? - myqiye
  • 2026年雷士顿蓄电池合作服务商TOP5推荐 - 优质品牌商家
  • 携程任我行卡回收攻略,快速变现! - 团团收购物卡回收
  • 美国联合航空:淡旺季优惠尽享,全天候服务护航您的旅程 - 今日又土又金
  • 如何用esbuild实现10倍构建速度提升:前端构建工具性能优化指南
  • 题解:洛谷 P1147 连续自然数和