CQ 周赛 Round#1
B. L 覆盖
仔细分析样例后可以发现一个结论,第一次先用 L 形状覆盖最少的 ,那么后面每次操作只覆盖 个 ,且存在这种覆盖方式。
参考代码:code
D. 非零和
考虑分段的本质是什么,其实就是给每个元素乘上 或 ,且不能有两个相邻元素都乘上 。
于是考虑,初始时假设每个元素都乘上了 ,现在我们需要将其中一些元素改为乘上 ,修改的两个元素不能相邻。
直接贪心地选取即可,从前往后枚举每个元素,判断若当前元素乘上 ,元素和的绝对值是否会减小,若减小就操作,然后用数组记录下一个元素不能再乘上 。
贪心的正确性也很好证明,若当前元素乘上 后,元素和的绝对值会减小,但是我们不修改当前元素,那么下一个元素最多也只会让元素和的绝对值减小相同的数(因为数值只有 ),所以我们先对当前元素进行修改,一定不会更劣,就做完了。
F. 树染色方案计数
一道很有意思的树形 dp,和 P4516 潜入行动 非常相似。
考虑状态怎么定义。第一个维度肯定是以 为根的子树,第二个维度是当前子树中的特殊节点个数,同时还要考虑当前节点的颜色,即为第三个维度。
当前节点的颜色无非跟 有关,即小于 ,等于 ,大于 这三种关系,将这三种关系记为 。故定义 表示以 为根的子树中有 个特殊节点,且当前节点颜色编号关系是 的染色方案数。
考虑初始化。。
考虑转移。套路的来讲,若 是 的父亲,则枚举 选择 个点,枚举 选择 个点。即为 。
此题中,因为加上了 这个维度,所以需要讨论 这三种情况。
- 若 ,即当前节点颜色编号小于 ,则儿子随便选。
- 若 ,即当前节点颜色编号等于 ,则儿子颜色编号只能小于 。
- 若 ,即当前节点颜色编号大于 ,儿子颜色编号除了 其他都可以选。
答案即为 。
代码:code
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现