随笔分类 - Codeforces
摘要:AC代码 A. Subtract or Divide $n \le 3$时特判。其余情况,若$n$为偶数,则可以直接从$2$转移,答案为$2$;若$n$为奇数,则先从$2$转移到$n - 1$,再转移到$n$,答案为$3$。 B. Non-Substring Subsequence 只要$s[1..
阅读全文
摘要:AC代码 A. Knapsack 猜结论:给所有的物品按重量降序排序。然后枚举物品,如果拿了这个物品后会超重,那么就不拿。否则就拿。 如果拿了一个物品后,重量符合了条件,就返回输出答案。 B. Catching Cheaters 观察1:如果为了使LCS增加1,而多用超过2个字符,这样其实是亏本的。
阅读全文
摘要:AC代码 A. Marketing Scheme 如果$2 \cdot l \le r$就可以,反之不行。 B. Reverse Binary Strings 易得:最后要么是010101...要么是101010... 分别枚举两种情况,算出每种情况下需要翻转的位置,记$r_i$为第$i$位是否需要
阅读全文
摘要:AC代码 A. Reorder 可以推出 \[ \sum_{i = 1}^n \sum_{j = i}^n \frac{a_j}{j} = \sum_{i= 1} ^n a_i \] 所以求个和但后看是不是和$m$相等就可以了。 B. Prime Square 直接构造。已知$101$是一个素数,然
阅读全文
摘要:AC代码 A. Box is Pull 如果同行或同列,则答案为两点之间的曼哈顿距离。 否则,先拉到同行,然后花两步换方向,再拉到同列,这样答案就是两点之间的曼哈顿距离再加二。 B. Belted Rooms 别问,问就是直接跑强连通分量(SCC)。如果一个SCC只有一个点,那么这个点不符合条件,否
阅读全文
摘要:AC代码 A. Number of Apartments 这题其实直接暴力就可以了,我还想了挺久想出了另外一个解法。 初始时,3,5,7是可行的,然后$n$可以从$n-3$,$n-5$或者$n - 7$处转移得到。 $O(n)$预处理,$O(1)$回答询问。 B. Barrels 降序排序,将第$2
阅读全文
摘要:AC代码 A. Avoiding Zero 记$sum_i = \sum_^i a_i$。易得$sum_n$为定值,故若$sum_n = 0$,则无解。 若$sum_n < 0$,将$a$升序排序后作为$b$,此时$sum_i$先降后升,最大值在$sum_1$处或$sum_n$处取到,这两个值都小于
阅读全文
摘要:AC代码 A. Copy-paste 贪心地使每次增量最小,即用$\min_ia_i$不断加到其他元素上。 B. Two Arrays 遍历数组,用一个集合保存$c$中的元素。 若$T - a_i$已经在$c$中了,那么就把$a_i$加入$d$,反之把$a_i$加入$c$。 特别地,将值等于$\fr
阅读全文
摘要:AC代码 A. Buying Torches 先将$coal$视为$y$个$stick$,然后就可以计算出想要完成任务至少需要多少个$stick$,记为$need$,然后计算至少多少次交易可以得到大于等于$need$个$stick$,再加上用$stick$换取$k$个$coal$需要的交易次数即可。
阅读全文
摘要:AC代码 A. Subset Mex 就先将集合中的数尽可能地用于增加$mex(A)$,然后再尽可能地增加$mex(B)$。 B. Maximum Product 先排个序,然后由于有可能负负得正,所以答案要么用最大的5个数,要么用最小的2个数和最大的3个数,要么用最小的4个数和最大的一个数。分别算
阅读全文
摘要:AC代码 A. Ahahahahahahahaha 通过作者半个小时的观察:全零和全一必定有一个是符合要求的答案,因为0的个数和1的个数至少有一个大于等于$\frac{2}$。 B. Big Vova 贪心。 将剩余可用的数字用一个集合装起来,然后从小到大枚举下标$i$,每次枚举可用的数字,保存使前
阅读全文
摘要:AC代码 A. Permutation Forgery 逆序输出排列$p$即可。 B. Array Cancellation 依据题意,若$a_i$大于$0$,那么$a_i$可以免费地用在增加后续值为负的元素。 从前往后遍历数组$a$,用一个计数器记录可免费用的正数和,每遇到一个正的$a_i$就加到
阅读全文
摘要:AC代码 A. Yet Another Two Integers Problem 最优的操作中,\(k = \min(10, abs(a - b))\),记$d=abs(a-b)$,最终的答案为$ans = \lfloor \frac{10} \rfloor + [10|d]$。 B. Minimu
阅读全文
摘要:AC代码 A. Rainbow Dash, Fluttershy and Chess Coloring 可以推导出$f_1 = 1, f_2 = 2, ..., f_n = f_{n - 2} + 1$。 然后就可以推出$ans = \lfloor \frac{n + 2}{2} \rfloor$。
阅读全文
摘要:AC代码 A. LCM Problem 若$a < b$,则$LCM(a,b)$是$a$的整数倍且$LCM(a,b) \ne a$,所以$LCM(a,b) \ge 2a$,当且仅当$b=2a$时取等号。 根据这个性质,就可以让$a=l, b = 2l$,如果符合条件就输出,否则无解。 B. Arra
阅读全文
摘要:AC代码 A. Matrix Game 对于给定矩阵,剩余可用的位置的数目是确定的,根据奇偶性判断就完事了。 B. Trouble Sort 如果数组$b$有0有1,那么Yes。否则只有数组$a$原本就有序才Yes。 C. Rotation Matching 因为是$a$和$b$是排列,所以固定数组
阅读全文
摘要:"AC代码连接" ) A Phoenix and Balance 显而易见,将前$\frac{n}{2} 1$个和最后1个分为1组,剩下的1组即为最优方案。 B Phoenix and Science 这题直接构造。 设$a$中不重复的值的个数为$cnt$。 如果$cnt k$无解。 如果$cnt
阅读全文
摘要:题意 给你3个数组$a, b$和$c$,最小化$(x y)^2+(y z)^2+(z x)^2$,其中$x \in a, y \in b, z \in c$。 解题思路 这题其实第一眼就秒了,但是赛中突然不相信自己的直觉,然后就想复杂了。 就很气,本来30min前能过得题被我硬生生拖到了1h+。 解
阅读全文
摘要:题意 给你一颗有根树,你要选择$k$个点,最大化$\sum_{i \in S} val_i$,其中$S$是被选点的集合,$val_i$等于节点$i$到根的路径上未被选择点的个数。 解题思路 这题思路挺有意思的。 我们可以逐个点进行选择。新选择一个点对答案的贡献为点到跟的距离减去子树中被选择点的个数。
阅读全文
摘要:题意 给你无根一颗树,每个节点是黑色或白色。对于每一个节点,问包含该节点的权值最大的子树。 子树的权值等于子树中白点的个数减去黑点的个数。 注意,这里的子树指的是树的联通子图。 解题思路 这场就这题卡的比较久。 首先,如果是有根树的话,只需要dfs一遍就能得出根的答案。 设根为1,将无根树转为有根树
阅读全文