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

图论题目总结

CF gym 101190B Binary code:

题目大意:

\(n\) 个最多一位未定的 01 字符串,现在请你输出一种方案,表示构造一种填 0/1 的方案。
使得不存在两个字符串一个是另一个的前缀,不存在输出 \(no\)
\(n \le 5 \times 10^5\)

解题思路:

两个串一个为另一个的前缀的很好的判定方式就是一个串在另一个串的 \(Trie\) 子树内。
也就是说我们要建出一棵 01 \(Trie\) 使得字符串对应的节点两两没有祖先关系。

由于每个串最多两种情况,那么我们可以将每种情况都先加到 \(Trie\) 树中。
那么相当于对于每一对有祖先关系的节点都只能选一个。考虑 \(2-sat\)

有一种很精妙的实现方法,就是在递归 Trie 树时记录一个节点表示该点祖先中至少选一个的 ”超级点“。
可以这样是因为我们只关心他不能与祖先有关系,所以我们可以将祖先看成一个整体。
\(O(n)\)

但这么做我觉得扩展不到线段树优化建图上,因为 Trie 每个节点都是一个具体的节点,但线段树一般不会存祖先,如果存的话就得爆了。
不过线段树的应用范围还是更广的,因为即使是这个题也可以将 Trie 拍成 dfn 序,这样在 dfn 序上线段树优化建图多个 log。

http://www.sczhlp.com/news/2632/

相关文章:

  • THUPC 2025 决赛 喜爱之钥
  • 408-OS之管程
  • java语法学习
  • 在 Ubuntu Server 上 使用 USB 无线网卡连接 Wifi
  • 比特彗星常见问题-种子市场使用教程
  • 搜维尔科技:2025年人形机器人动捕技术研讨会将在本周四召开
  • 数据库
  • 第一篇:MySQL数据库介绍及部署
  • Trie
  • React的API:memo
  • 太原
  • 生成函数学习笔记
  • 比特彗星常见问题-意外退出程序后下载列表清空的解决方法
  • 2025“钉耙编程”中国大学生算法设计春季联赛(1)
  • 从日志到告警,带你用好 SeaTunnel 的事件监听能力
  • 14
  • 2025.7.31总结 - A
  • 2025.7.31学习日记
  • 比特彗星常见问题-屏蔽吸血客户端和设置自动反吸血
  • 括号组合全排列
  • rust里的时间控制
  • go URL编码 base64 编码 记录
  • 408-OS之进程碎碎念
  • AI Agent多模态融合策略研究与实证应用
  • 大道至简,方得始终 读《大道至简》有感
  • Windows 11任务管理器CPU计算逻辑优化
  • redhat7.9更换源为centos7(阿里云源-目前centos7可用的源) - 教程
  • Http与Websocket的区别 - Charlie
  • 高版本Android安装低版本apk弹框问题 - M
  • 思通数科 AI 安监系统:为工业园安全保驾护航