Codeforces Round #734 (Div. 3)
比赛链接
Codeforces Round #734 (Div. 3)
D1. Domino (easy version)
给你 组数据。对于每组数据给你一个 的网格( 为网格高度, 为网格宽度,且网格的数量为偶数),要求在网格中放置多米诺骨牌,每个骨牌占据 的网格区域。对于这 个骨牌,要求正好有 个横着放置,而剩下的 个竖着放置,正好铺满台面。现在要你给出对于每组 和 ,是否有一种方案满足条件。如果有,输出 YES
,反之输出 NO
。
解题思路
构造
分情况讨论:
-
都为偶数时,此时可将整个矩形分为多个 的正方形,由于一个 的正方形只能同时放两个横或竖者的骨牌,所以要求 为偶数
-
为奇数, 为偶数,先考虑 是否能将第一行填满,如不能填满,则不满足要求,假设此时将 个横着的骨牌填满,则必定有一列没有骨牌,由于 为奇数,这时肯定不能只用竖着的骨牌来填,故不满足要求。如果可以填满此时可以忽略第一行,即转化为判断 行, 列是否可以填满 个横着的的骨牌,即第一种情况
-
为奇数, 为偶数,相当于判断 行, 列是否可以填满 个横着的的骨牌,即第二种情况
代码
D2. Domino (hard version)
即在上题的基础上要求输出字母方案,且相邻骨牌之间表示的字母不同
解题思路
构造
按照上题模拟一遍即可,用字母 和 表示横着的骨牌, 和 表示竖着的骨牌,两种骨牌交替使用相应的字母即可,对于 和 不全为偶数的情况,交替处理横着的的第一行后,再开始处理横着的骨牌时,要与使用的第一行开始的骨牌的字母不同,而对于某一行中横着的骨牌处理完后,该行剩余部分得用竖着的骨牌,为了防止跟下一行竖着的骨牌冲突,直接用 和 交替处理该行中剩余的竖着的骨牌
代码
E. Fixed Points
一个整数序列 ,一次操作,可以删除一个数,然后该数右侧的数向左移动一个单位。对于一 个长度为 的整数序列 ,求最少需要删除几个数后,会有至少 个 满足 。
输入格式:
第一行一个正整数 表示数据组数。
对于每组数据,第一行两个正整数 分别表示整数序列的长度,以及至少满足 的个数。
保证 在测试数据中的总和不超过 2000 。
输出格式:
对于每组数据,
- 如果无解,输出 。
- 否则,一个整数表示最小的删除次数,
说明/提示:
对于第一个测试数据,序列不满足所需条件,但可以通过删除第一个数来提供,序列为 , 有 个数满足条件。
对于第二个测试数据,有两种方法:第一种是删除 和 ;第二种是删除 和 。
解题思路
dp
-
状态表示: 表示前 个数删除 个数后对应下标相等的最多个数
-
状态计算:
分析:枚举最后删除的数是否是最后一个数,如果删除的是最后一个数,则最后一个数没有贡献,即该删除操作浪费了,且对前面的数的贡献没有影响即 ,如果删除的不是最后一个数,由于要删除的是 个数,则最终最大的下标为 ,最后一个数的贡献为 ,而前 个数的贡献为 ,此时最大下标为 ,所以最后一个数的贡献对前面的数没有影响,故总的贡献为
最后,在 中找出满足 的最小 即可 -
时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16287010.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!