文章分类 - 题解
摘要:A 日期 签到题,做法很多,我推荐最简单最保守的做法,就是枚举所有合法的日期,然后一个一个比较答案,最终答案取 min 值。 B 和积和 简单题,题目的形式已经很明显的表明了做法,推式子即可,下面是推式子的具体过程: \[S(l, r) \\= (a_l + a_{l + 1} + a_{l + 2
阅读全文
摘要:题目大意很简单,同时显然看出单调性,直接二分答案,问题变为给定最远覆盖距离,求最少覆盖点。 这是一个经典的贪心问题。事实上,他很简单。 我们提取并形式化题目: 给定一棵树和值 \(k\),选取 \(s\) 个点涂黑。 对于每一个点,如果离他最近的颜色为黑的点,与他的距离,小于等于 \(k\),我们认
阅读全文
摘要:这道题的难点和有意思的点在于博弈论这一块儿,其他的比如组合数学,其实是很偏板子的,所以我们主要讨论博弈论。 不失一般性,假设第一个牛是 FJ 的,然后我们得到牛的序列 \(a_1,b_1,a_2,b_2,\cdots,a_n,b_n\),然后设 \(d_1\) 为 \(a_1\) 和 \(b_1\)
阅读全文
摘要:主要思路就是贪心 + dp,其中细节很多,所以不简单。 首先显然,我们一定是不惜代价地让前面的值大于后面的值,于是我们考虑,让第一个数最大该如何做。 我们发现要让第一个数是某个数的代价,是有单调性的,也就是说,我们要让第一个数越大,那么付出的代价一定大于等于让他比较小,所以显然使用二分,二分一个值
阅读全文
摘要:2024 题解 做法 1:按照题意模拟。 std::string 提供了很多方便的字符串处理方法。 erase 函数可以删除一个子串。 erase 的(其中一个)用法是 s.erase(index, length),从字符串 s 中的下标 index 处开始删除一个长度为 length 的子串。(其
阅读全文
摘要:subset sum 题解 Subtask 1 因为 \(c\le 5000\),输出 \(c\) 个 \(w\) 即可。 Subtask 2 考虑让本质不同的方案尽可能少,比如只有两种。(Subtask 1 中只需一种) 当 \(w\) 为偶数时,任意两个 \(w/2\) 可以凑成一个 \(w\)
阅读全文
摘要:题目链接 这道题是基于验证答案的。直接对设备数量求解并不简单,但是通过对一个答案是否正确进行验证,就可以解决这道题。 我们首先假设答案是 \(x\),考虑在什么情况下这个答案合法。 我们考虑一个策略,就是首先向前走 \(x\) 步,并且途径设备全部打开。最后我们走到第 \(x+1\) 个节点,再将这
阅读全文
摘要:Solution of C 做法:贪心分讨 首先,看到二进制,并且要求计算一个差值的绝对值,可以考虑拆位,一位一位算。 有一个很常用的结论,就是 \(2^1+2^2+2^3+\dots+2^{x-1} < 2^x\)。于是将题目中的 \(a\) 和 \(b\) 拆位以后,从高位往低位枚举,假如在某一
阅读全文
摘要:题目链接 项链 题解 出题人是小丑,写了一个很难的写法,而且给这个题目评了很难的难度,结果被方大佬瞬间秒了,提出了极其简单的方法。 出题人的垃圾解法 运用莫队+二分,莫队是离线做法,但是可以快速解决一大批次的问题,二分虽然需要在线做,但是这个题目破环成链后,实际上是对于每个左端点,求出最靠左的右端点
阅读全文
摘要:题目链接 解析逻辑 差分机的运行逻辑是完成这道题目的关键。在成功执行一个操作之后,它就会从头开始寻找是否存在可以执行的操作,根据这个特性,我们可以获取一些技巧: 在整个操作序列最开始插入 答案字符串=(return),这样只要在一次操作后字符串是答案,就可以直接终止操作,获得正确答案。 如果某个操作
阅读全文
摘要:题目链接 左偏树做法 由于 \(m - k\) 的特性,每个节点的 \(m - k\) 一定小于等于他的任何一个子节点的,因此可以把每个节点的子树中的每个节点存进一个大根可并堆,即左偏树,中,然后不断 \(pop\) 堆中最大的元素直到堆中元素有且仅有 \(m - k\) 个。至于快速入堆,就是将一
阅读全文

浙公网安备 33010602011771号