已严肃完成今日96种状态的超级神仙DP大学习

news/2025/10/9 21:17:51/文章来源:https://www.cnblogs.com/infter/p/19131951

传送门

官方题解做法。

注:因为黑格子上只能放黑棋,白格子上只能放白棋,所以有的时候没必要区分是格子还是棋

Step 1 - 找性质

  • 对于一个极大棋子联通块,我们可以在它左边或者右边放一个棋子(具体来讲选择对应位置格子颜色的棋子然后放上一个相同颜色的棋子)

这意味着,我们对于我们可能的一个方案,我们只需要在可能的方案中的每个联通块中生成一个小段(我们称之为标记)然后就可以用这个小段来“长”出目标方案。

  • 我们如果要新放一个标记,那必须满足当前所有与已放棋子相邻的格子(称作缺口)一定得是同一个颜色的(这样才能选择另一个颜色来做标记)

于是我们可以分类,将一个所有相邻格子都是白的情况下放的标记,称作白放置,否则称作黑放置。

  • 在一个可能的最优方案中,只可能出现一种颜色的放置,即不会黑白放置都出现。

    证明:不妨设先进行了一次白放置,后进行了一次黑放置。对于第二次黑放置,它要求所有段的缺口都是黑的,而第一次白放置要求所有段的缺口都是白的。所以在两次放置之间必须把所有白缺口的段都长成黑缺口。但段的生长本身不依赖其他段,所以你大可以在第一次就把所有白缺口长成黑缺口,然后把第一次变成白放置。

于是我们可以直接枚举答案是黑放置还是白放置,然后对两种情况取 min 即可。

不妨设答案是白放置。

  • 白放置一定只能放黑棋子。然后我们又要求所有缺口都是白的,因此大部分情况下标记都是一个极大的黑联通块。

但第一次和最后一次的约束不太一样,具体的:

  • 第一次因为是随便放,因此可以放一个白的单点,满足两边的缺口都是白的就行。

  • 最后一次因为不用后面的生长,因此可以只放一个黑的单点。

Step 2 - DP

OK,我们已经找到了方案的组成部分,具体的有三种:

  • 左右都是白的白点,称作 a1。
  • 极大黑联通块,称作 a2。
  • 黑点,称作 a3。

我们要求方案中的每个联通块都包含一个 a1,a2 或 a3。且 a1 和 a3 只能出现一次。

设计状态:f[i][0/1][0/1][0/1][0/1][0/1/2][0/1]

表示:当前位置,用了 a1 吗?用了 a3 吗?当前格子选了吗?当前的联通块里有 a1 吗?当前的联通块里没开始 a2(0),当前联通块里开始了但没结束 a2(1),当前联通块结束了 a2(2)。当前联通块里有 a3 吗?

这是一个高达 96 种状态的 DP,不可能去手动转移。我们考虑给转移归类。

我们可以拆成两步:第一步先处理当前的这个点的状态,要不要放进 a1/a2/a3?第二步再直接转移到下一个点。

详细的可以看代码,写了注释。

Link

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/933852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3388 【模板】割点(割顶) tarjan

解题思路 割点(割顶):在一个无向图中,如果删除某个顶点以及与之相连的所有边后,图的连通分量数量增加,则该顶点称为割点。 Tarjan算法求割点的核心思想:使用深度优先搜索遍历图维护两个数组:dfn[i]:顶点i的深…

new day

今日进行离散数学作业,进行四级备考,打算明日继续复习java。过完国庆有些懒散,努力调整状态。

数据结构——受限线性表之栈 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vLLM 吞吐量优化实战:10个KV-Cache调优方法让tokens/sec翻倍

GPU 性能没问题,模型也训练得不错,但 token 吞吐量就是上不去?问题多半出在 KV-cache 上。本文整理了 10 个实际可用的优化方向,都是能直接上生产环境的那种。https://avoid.overfit.cn/post/321dd7c3c76444b59e97…

Linux之周期性定时任务实践

一、每日凌晨1点,删除指定文件 1.首先选择一个目录创建两个文件。我这里是/home/zxj touch bat1 bat22.进入任务编辑界面 crontab -e 3.插入任务并保存退出 0 1 * * * rm -f /home/zxj/bat1 0 1 * * * 表示 “每天凌晨…

MyBatis-Plus 的 QueryWrapper 应用以及在内存中处理JSON数组字符串匹配

需求分析: 咨询师筛选: 列表浏览:展示“全部咨询师”列表,包含姓名、从业时长、擅长领域、用户好评率等基础信息;精准筛选:支持按“困扰类型(如焦虑、婚姻家庭)”“性别”“咨询方式”“流派”标签筛选;关键词…

P9461 「EZEC-14」众数 II

思路:若区间包含的\(a_i\)完整,最小众数为\(1\);若\(a_l\)只有后缀\([x,a_l]\)且\(a_r\)只有前缀\([1,y]\),当且仅当\(\forall i \in [l,r], a_i \ge x\)时最小众数是\(x\),否则为\(1\)。为方便求解,先求出所有最…

从 ZooKeeper 到 ELK:分布式中间件与日志分析系统全解析 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:win11 安装 WSL2 Ubuntu 并支持远程 SSH 登录

详细介绍:win11 安装 WSL2 Ubuntu 并支持远程 SSH 登录pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

Ai元人文:论智能的“全息定帧”与“渐进式显影”机制

Ai元人文:论智能的“全息定帧”与“渐进式显影”机制 ——对“悟空之眼”AI元人文架构的关键补充 引言:被忽略的“灵感成本” 在构建拥有“悟空之眼”的创造性AI时,我们惯常的思维是:系统在“顿悟”的瞬间,就应直…

24 LCA模拟赛2T4 colorful 题解

Colorful Rectangle 题面 给定 \(n\) 个点,每个点有颜色 \(\in \{0, 1, 2\}\) ,求至少包含三种颜色并且与坐标轴平行的矩形的最小周长。 \(3 \le n \le 10^5\) \(0 \le x_i , y_i \le 10^8\) 题解 这道题思路不难懂,…

23 LCA模拟赛2T2 异或排列 题解

Fast XORting 题面 给定一个 \(2\) 的整数次幂 \(n\) 以及一个 \(0 \sim n - 1\) 的排列 \(a_1, a_2, \cdots a_n\)。 在一次运算中,你可以进行以下两种操作之一:交换两个相邻元素 选择任意整数 \(0 \le x \le n - 1…

SQLAlchemy 库 - 实践

SQLAlchemy 库 - 实践2025-10-09 20:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-…

Bugkuctf的哥哥的秘密

描述: 哥哥的秘密都藏在妹妹的空间里了 这是妹妹的QQ:2492853776 去找找哥哥藏起来的旗帜吧 构造:http://user.qzone.qq.com/QQ号码/infocenter?via=toolbar https://user.qzone.qq.com/2492853776hint1:解题流程为…

国庆做题记录(基础算法)

这篇文章信息量偏大,请谨慎阅读,注意高效利用右边的目录。 其他部分咕咕咕地更新中……敬请期待 1.1 二分 & 双指针 关联博文:Atserkcn-0/1分数规划 P1404 平均数 既然要让子串平均数最大,那就二分平均数,判断…

【MySQL学习笔记】数据库的CURD(一) - 详解

【MySQL学习笔记】数据库的CURD(一) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

fp16训练神经网络时出现nan问题

问题总结:nan 问题 现象: 在训练过程中,训练损失(Train Loss)和测试损失(Test Loss)的值变为 nan(Not a Number)。这通常意味着训练过程中出现了数值计算错误或不稳定,导致无法计算出有效的损失值。同时,训…

第十篇

今天是10月9号,返校的第一天,学习了链表的相关知识,也学习了栈的有关知识点。

504 品酒大会!!!!!!

歌曲瑞平!!!!!!目前榜单 省流版:

newDay07

1.今天确实是没学多少,背了背单词,看了会《程序员修炼之道》 2.明天去图书馆静心学学吧,主要是Java这一块,再写写作业 3.过完国庆有点犯懒了