Codeforces Round #738 Mocha and Diana (hard&easy) 题解 (Java/C++)
题解 首先,显而易见,我们会使用并查集来判断两个点是不是在同一个树里。 我们可以得到一个结论,最终能添加的边数为$\max(n-1-m1,n-1-m2)$。也就是说:两个森林中至少有一个森林最终会合并成为一棵树。…
题解 首先,显而易见,我们会使用并查集来判断两个点是不是在同一个树里。 我们可以得到一个结论,最终能添加的边数为$\max(n-1-m1,n-1-m2)$。也就是说:两个森林中至少有一个森林最终会合并成为一棵树。…
A. Ezzat and Two Subsequences 这个题目的贪心算法并不难想到。但其严格证明还是有一些意思。 B. Moamen and k-subarrays 题解…
题解 首先,不难猜到这个题的最终结论:那就是最大的数分为一段,剩下的部分分为另一段。但这个题目的证明还是有点意思的。…
题解 这个题大概分为四个部分。 第一部分:Hash 由于最多只有m段1,因此我们很自然的想到将$1\leq l \leq r \leq 10^9$的hash到$1\leq l \leq r \leq 2\cdot 3\cdot 10^5$。将原先的线段的两端离散后排序,按照大小顺序依次hash即可。…
A. Gregor and Cryptography 题解 如果P是偶数,则输出2和P即可,这样同余0。如果P是奇数,则输出2和P-1即可,这样同余1。 代码 Java C++…
A. PizzaForces 题解 不难发现平均每一片都需要2.5分钟。同时,我们发现超过6的所有偶数都能构造出来。于是,对于偶数,我们直接乘以2.5即可;对于奇数,加一后再乘以2.5即可。 代码 Java C++…
题解 首先,我们注意到最终结果只和w的最大值和最小值有关。这将意味着,只要w在最大值和最小值之间,这个线段加不加进来其实都不会影响。…
A. Cherry 题解 显然,我们希望区间内的最大值和最小值都尽可能大,这样乘积才能尽可能大。显然$$max(a_{l},a_{l+1})\cdot min(a_{l},a_{l+1}) \geq max(a_{l},a_{l+1},a_{l+2})\cdot min(a_{l},a_{l+1},a_{l+2})$$和$$max(a_{l+1},a_{l+2})\cdot min(a_{l+1},a_{l+2}) \geq max(a_{l},a_{l+1},a_{l+2})\cdot min(a_{l},a_{l+1},a_{l+2})$$中至少有一个成立。…