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

[NOIP2021] 棋局

快跑,这是一道大模拟!

image

[NOIP2021] 棋局 - 洛谷P7963

标签 线段树,并查集

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

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

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

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

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

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

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

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

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

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

相关文章:

  • HuggingFace Inference API调用:无需GPU运行大模型
  • PyTorch-CUDA-v2.8镜像安全性评估:是否适合企业级应用?
  • 【物理】模拟粒子在电场和磁场中的轨迹研究附Matlab代码
  • 第六十七篇
  • AI应用架构师的独特视角:人机协作新范式流程设计最佳实践
  • PyTorch-CUDA-v2.8镜像优势分析:为什么它适合你的大模型项目?
  • 12.22 - 12.28 周总结
  • Jupyter Notebook单元测试:验证PyTorch函数正确性
  • MATLAB代码:基于模型预测控制的楼宇负荷需求响应研究 关键词:楼宇负荷 空调 模型预测控制...
  • Jupyter Notebook主题切换:个性化开发界面风格
  • Git Merge Conflict解决冲突:整合多人PyTorch开发成果
  • 重组蛋白常用标签技术解析:科研级蛋白表达与纯化中的关键工具
  • SSH无密码登录配置:提高PyTorch服务器访问效率
  • Git Stash暂存更改:临时切换上下文处理紧急PyTorch任务
  • 【物流中心选址】智能优化算法在物流中心选址的应用附Matlab代码
  • PyTorch安装后无法调用GPU?试试这个预配置镜像方案
  • 从入门到精通:Nanoscope Analysis AFM数据处理全攻略
  • 【全栈前端老曹】2025年CSDN博客文章创作历程与技术心得年度总结
  • 基于PLC的交通灯控制系统交通信号灯十字路口红绿灯MCGS嵌入式组态仿真
  • SSH Config文件配置:简化频繁连接PyTorch服务器操作
  • 【先进PID控制算法(ADRC,TD,ESO)加入永磁同步电机发电控制仿真模型研究附Matlab代码
  • CNN特征可视化方法:理解PyTorch模型决策过程
  • PyTorch LRScheduler学习率调度器种类大全
  • PyTorch Early Stopping实现:防止模型过拟合策略
  • YOLOv5 Label Assignment改进:OTA标签分配策略
  • Git Ignore忽略文件:排除PyTorch缓存和日志干扰
  • Conda虚拟环境 vs 镜像化环境:谁更适合PyTorch开发?
  • Anaconda虚拟环境备份与恢复:保护PyTorch开发配置
  • GitHub Labels标签分类:组织PyTorch项目Issue
  • 【协同路径】多Dubins路径段协同路径规研究附Matlab代码