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

[NOIP2021] 棋局

快跑,这是一道大模拟!

image

[NOIP2021] 棋局 - 洛谷P7963

标签 线段树,并查集

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

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

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

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

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

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

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

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

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

http://www.rkmt.cn/news/177018.html

相关文章:

  • PyTorch-CUDA-v2.8镜像安全性评估:是否适合企业级应用?
  • 【物理】模拟粒子在电场和磁场中的轨迹研究附Matlab代码
  • PyTorch-CUDA-v2.8镜像优势分析:为什么它适合你的大模型项目?
  • 第六十七篇
  • 从入门到精通:Nanoscope Analysis AFM数据处理全攻略
  • 【全栈前端老曹】2025年CSDN博客文章创作历程与技术心得年度总结
  • PyTorch LRScheduler学习率调度器种类大全
  • 【先进PID控制算法(ADRC,TD,ESO)加入永磁同步电机发电控制仿真模型研究附Matlab代码
  • CNN特征可视化方法:理解PyTorch模型决策过程
  • Conda虚拟环境 vs 镜像化环境:谁更适合PyTorch开发?
  • 配置Jenkins使用tag发布
  • CUDA Streams并发执行:重叠PyTorch计算与数据传输
  • Docker Top查看进程:观察PyTorch容器内部活动
  • Linux 的日志分析命令
  • CUDA共享内存优化:提升PyTorch张量操作效率
  • HuggingFace Trainer自定义训练循环:超越默认封装
  • CNN空洞卷积实现:PyTorch中atrous convolution应用
  • 长期投资在波动市场中的优势
  • 相机
  • CUDA Occupancy Calculator使用:优化PyTorch核函数配置
  • CNN批量归一化实现:PyTorch中BatchNorm层的应用
  • GitHub Issue模板设置:规范化反馈PyTorch项目问题
  • windows 10异常掉电关机再重启进入“恢复”界面
  • Markdown绘制流程图:展示神经网络架构设计思路
  • 【计算机毕业设计案例】基于SpringBoot的高校竞赛管理系统设计与开发基于springboot的高校学科竞赛平台开发与设计(程序+文档+讲解+定制)
  • CUDA核心概念解析:理解PyTorch背后的GPU加速原理
  • Docker Network配置:实现PyTorch容器间通信
  • GitHub Actions自动化测试PyTorch环境兼容性配置示例
  • Windows10下载
  • 【毕业设计】基于SpringBoot+Vue的宠物生活馆网站的设计与实现(源码+文档+远程调试,全bao定制等)