尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[NOIP2021] 棋局

[NOIP2021] 棋局
📅 发布时间:2026/6/27 1:39:30
1

快跑,这是一道大模拟!

image

[NOIP2021] 棋局 - 洛谷P7963

标签 线段树,并查集

加入一个棋子,相当于将一个连通块分裂,这是不好办的。不妨倒过来,先把所有棋子加进去,再合并连通块。

三种道路中,只有第三种最不好处理,需要同时维护空格与棋子。为了查询当前棋子能吃掉哪些,需要开两棵线段树,表示两种颜色来维护等级,合并时使用线段树合并。因为两个连通块可能可以接触到同一个棋子,所以合并时需十分谨慎,每个棋子都要开一个位置。

对于第二种道路,到达的一定是一条横线加一条竖线,且棋子只能出现在端点(至多 \(4\) 个),使用线段树(并查集)维护每一行、每一列的连续段(棋子消失表示合并)算出能到达的棋子数。

关键在于去重,如何去掉两类的交集?

我们给每个格子编两个号,两个编号都由两个关键字组成,一个先按行,后按列;另一个先按列,后按行。那么第二类道路能到达的点中可以演变成两端区间(横着一个,竖着一个),在第三类道路中用线段树维护这两种编号即可。而对于棋子,因为最多四个,暴力查询就可以了(使用启发式合并即可)。

第一类道路至多只能到达四个格子,也是暴力判即可。

时间复杂度是巨大常数的单 \(\log\) 。

为了方便,我把所有地方都开了线段树,导致了更大的常数。。。

因为要开很多棵线段树,合并时可能还有一些去重的问题,空格和棋子不能混在一起。。。所以极为 shit,费时 \(2 days\) 终于通过。

相关新闻

  • PyTorch-CUDA-v2.8镜像安全性评估:是否适合企业级应用?
  • 【物理】模拟粒子在电场和磁场中的轨迹研究附Matlab代码
  • PyTorch-CUDA-v2.8镜像优势分析:为什么它适合你的大模型项目?

最新新闻

  • Type-C一拖多快充线:智能功率分配与选购指南
  • 94个公共Tracker服务器:彻底终结BT下载卡在99%的终极解决方案
  • 生产环境下的Agent记忆机制设计:短期上下文与长期向量库的工程化取舍
  • 硬件预取器安全挑战与PhantomFetch防御技术解析
  • 基于4G和GPS的智慧养殖物联网终端设计与优化
  • 前端XSS攻击防御实战:从原理到2025年立体化安全方案

日新闻

  • 单节点跑业务稳如泰山 扩容高可用集群反而频繁卡死 复盘完整连接交互揪出深层根因
  • Boss直聘批量投递工具:5倍效率提升的求职价值重构指南
  • 3分钟解锁VLC点击暂停插件:让视频控制变得如此简单!

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号