Codeforces Round #609 (DIV 2) D. Domino for Young
题目。
我对官方题解的理解。
断言:Young 图能被多米诺骨牌填满的充要条件是:将 Young 图棋盘染色后,黑白格子的数量相等。
显然,此条件是必要的,下面证明它也是充分的。
我们用每一列的高度来表示一个 Young 图。
下面叙述一种用多米诺骨牌填充 Young 图的方法。
为了方便描述,把最右侧的那一列称为第一列,第一列左边的那一列称为第二列,以此类推。
下述方法保证:若 Young 图里的某个格子
显然,满足这个条件的填充方法总是存在的。下文中,我们把被多米诺骨牌覆盖了的格子看做是被删除了。
从右往左看 Young 图的每一列。
-
若第一列的高度是偶数,则把它删除。例子:5 4 3 2 2 变成 5 4 3。若第一列的高度是奇数,则把这一列除了最底下的那一块之外的部分删除。例子:5 4 3 变成 5 4 1
-
此时第1列高度是1,若第2列高度是奇数,则一定可以把这两列都填满并删除,回到第1步。例子:5 3 1 变成 5。若第2列的高度是偶数,则把第2列删到只剩下最底下的两格,转第3步。例子:5 4 1 变成 5 2 1。
-
若第三列的高度和第二列的高度奇偶性相同,先把它的高度降为和第二列相同,再把第二列和第三列的高度都降为1,再把第一列和第二列删除。转第2步。
-
.....
按上述方法,最后 Young 图要么被删空,要么变成形如
设输入的 Young 图经棋盘染色后有
下面证明:形如
0
-----------
0
1 0
-----------
0
1 0
0 1 0
-----------
上图中 0 代表白色格子,1代表黑色格子。不失一般性,假设左上角的格子染成白色,这时白格子比黑格子多。对
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 智能Agent如何改造传统工作流:从搜索到全能助手
2016-12-23 Something Strange (to be completed)