社区讨论

题目正解求助

学术版参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhju1fef
此快照首次捕获于
2025/11/04 08:30
4 个月前
此快照最后确认于
2025/11/04 08:30
4 个月前
查看原帖
脑子一热想了个题目,结果发现自己不会做,故来求助解法。
题目大概可以这样描述:
nn 个集合和 mm 个权值只能为 00 或者 11 的元素,均从 11 开始编号,最开始所有集合为空且所有元素权值为 11。然后有 qq 个操作,操作共有 5 种,分别为:
  • 1 x y 使元素 yy 加入集合 xx
  • 2 y 将元素 yy 权值设为 00
  • 3 a b 将集合 a,ba,b 均设成两者的并集
  • 4 x 查询集合 xx 内所有元素的权值和
  • 5 y 查询元素 yy 在多少个集合中
数据范围初步设想最大为 10510^5 量级的。
本人有一个存在本人无法解决复杂度瓶颈的初步设想,就是将所有集合与元素都视作有向图上的节点,操作 1 看作是 xx 拆点变成 xx',并向 xxyy 各连一条有向边,操作 3 看作是 aabb 互相连一条边,将所有操作离线后构建出一个有向图,然后跑 Tarjan 强连通缩点,转化成一个 DAG 只有修改点权,动态维护点权和的问题。但是问题就在我不会 O(nlogkn)O(n \log^k n) 或者 O(nlogn)O(n \log \sqrt n) 的动态维护 DAG 的方法。
求一个正解。

回复

3 条回复,欢迎继续交流。

正在加载回复...