摘要: 一道好题,最开始想出来了正解然后被自己否了,想了半个小时没想出来看了题解才发现。 思路 很明显这道题的答案最大是 \(n\)(全部竖着涂)。 这道题的填涂方法有两种:横涂和竖涂。显然我们可以横涂直到触碰到最小高度,然后图就被分割成了若干份。然后分治处理,取横涂和竖涂最优即可。 于是,没了。 代码 # 阅读全文
posted @ 2025-04-20 17:53 Hootime 阅读(8) 评论(0) 推荐(0)
摘要: 其实就是炮兵阵地的改版,但是改得不多。 思路 预处理每一行的合法状况,然后跑一遍状压 DP 就行了。注意放置国王的位置有限制。 另外警示后人: 十年 OI 一场空,不开________见祖宗; 枚举已经放置的国王数量的时候从 \(0\) 开始。 然后,没了。 代码 #include <bits/st 阅读全文
posted @ 2025-04-20 17:14 Hootime 阅读(33) 评论(0) 推荐(0)
摘要: 思路 就是一个分组背包上树,以子节点的结果当作父节点的物品。然后做一个化边权为点权。 于是没了。 #include <bits/stdc++.h> #define rint register int #define rllong register long long #define llong lo 阅读全文
posted @ 2025-04-20 15:10 Hootime 阅读(4) 评论(0) 推荐(0)
摘要: 好水的题…… 思路 一道裸的数位 DP。先把 \(100 \sim 999\) 的质数打出来,然后注意到一个三素数数中每两个素数有两位重叠,于是 DP 即可。 记得开滚动数组。 代码 #include <bits/stdc++.h> #define rint register int #define 阅读全文
posted @ 2025-04-20 13:51 Hootime 阅读(11) 评论(0) 推荐(0)
摘要: 神犇 LEMON_dasiy 推荐的题目,果然做不出来。 思路 首先定义状态 \(f_i = \sum_{j = 1}^{i} F(i,j)\)。显然 \(f_1 = 2\)(取 \(a_1\) 或 \(\emptyset\))。 然后,假设没有重复的元素,那么就有组合和单干两种选择。 组合:和前面 阅读全文
posted @ 2025-04-19 12:09 Hootime 阅读(10) 评论(0) 推荐(0)
摘要: yuruilin2026:这道题你还做不出来? 这是一道不怎么简单的简单题。 思路 首先考虑暴力。把每名战士的作用发挥到极致,暴力跳即可。复杂度 \(O(n^2)\)。 但是注意一个“跳”字。既然是跳,那为什么不用 ST 表跳? 于是维护一个 ST 表表示一个战士跳 \(2^n\) 个战士能跳到的最 阅读全文
posted @ 2025-04-19 09:54 Hootime 阅读(14) 评论(0) 推荐(0)
摘要: 一道简单题,可惜我最开始没做出来,经过一位神犇的指导才 AC。 思路 首先考虑 Kruskal。但是复杂度 \(O(n^2 \log n^2)\),别想了。 但是注意到有很多边(同一行/列)的权值是一样的,于是直接把行/列排序,然后贪心。但是注意判一下环,不然就不是生成树了。 判环很简单,令已经加入 阅读全文
posted @ 2025-04-18 19:59 Hootime 阅读(74) 评论(2) 推荐(0)