随笔分类 - CF
好好加油
摘要:D. Explorer Space 一点一点把题目理顺。看看哪些是可以推断出来的。 对于 dp 的题目而言,要一点一点去分析其中什么东西是可以递推的,正如这道题中 然后再进行记忆化搜索即可。 // C
阅读全文
摘要:D - Cut 对于一道题目,如果没有别的想法,那么就可以先从它的朴素解法入手,然后再想能不能找到优化它的方法。 对于这道题而言,朴素的解法就是用一个数组来维护每一个位置失配的最远位置,可以开一个数组进行记录。但是在最极端的情况下,每次查询会被卡成的,所以,这个地
阅读全文
摘要:C - Planar Reflections 参考:Codeforces 1498C - Planar Reflections (DP) 对于 dp 而言,就是要发现其中可以递推的东西。 第
阅读全文
摘要:D - Returning Home 参考:D:Returning Home-Codeforces Round #675 (Div. 2) 最短路的题难点在于建图,这道题的图不是特别难建 思路:对于每一个点,分别与 x 轴和 y 轴上相邻的两个点,连边,然后起点与每一个点连边即可。 //Create
阅读全文
摘要:F. Fruit Sequences 参考:tutorial 遇到这种求的一般情况下都是固定一个端点,然后快速求解值即可。 这种题的解决办法就是寻找不同状态之间是如何转移的,然后要能够很快地转移过去,然后就可以得到答案了。 #include <bits/s
阅读全文
摘要:Catching Cheaters 其实就是把最长公共子序列的 dp 维护的值变为的值就好了。 #include<bits/stdc++.h> using namespace std; const int maxn=5005; int dp[maxn][maxn
阅读全文
摘要:B - Freebie 期望= 把特殊天分为两类,一种是周末和周一,一种是周二三四五。 ① 对于假设把周末和周一合并为一天,也使得这一天在一年中出现的概率为。 要求出这一天是特殊天的概率有点复杂,正难则反。于
阅读全文
摘要:D - Omkar and Circle 参考:Codeforces Round #655 (Div. 2) 题解 (ABCD) 由题意可得,每次只取个数,且只有一对数相邻。最后选取位置是奇数位或者偶数位。 用几个样例手推,来发现规律 // Created by CAD on 20
阅读全文
摘要:D - Yet Another Yet Another Task 这个题的思考角度很独特,它是通过遍历子段中的最大值来实现的,这样我们就只用找到段内元素小于当前最大值的,最大连续段的和即可。比我之前想的一个 dp 方便多了… 我感觉这些题很多时候考察的都是思考问题的角度,而不是考察思维能力的极限,所
阅读全文
摘要:"D. Multiset" 后面才知道 的复杂度是的,所以 t 了很多次。 当需要进行很多次插入和删除第 k 位数这两种操作的时候,可以用树状数组来对其进行优化, 表示的就是 i 这个数在当前序列里排的位置,求第 k 位数的大小可以用二分进行优化,这样复杂度就是$O(log(log(n)
阅读全文
摘要:"C. Orac and Game of Life" 参考: "Codeforces Round 641 Editorial" 要注意到可能会有多块区域会同时发生变化,那么这个时候就不能用 dfs 来写了,考虑到它的同时性,那么就可以用 bfs 来写 将思维转化为代码的能力。
阅读全文
摘要:"D2. Prefix Suffix Palindrome (Hard version)" 参考: "Codeforces Global Round 7 — Editorial" 关键在于会利用马拉车算法求最长回文串。
阅读全文
摘要:"D Orac and Medians" 参考: "Codeforces Round 641 Div1.B Orac and Medians 中文题解" 解题的关键在于,要找到其中的规律,然后就可以直接暴力了。 感觉找规律的技巧在于——对解决方法进行分类即可,以小化大。
阅读全文
摘要:"D Phoenix and Science" 参考: "Codeforces Round 638 (Div. 2) Editorial" mass的总和只与每天晚上的菌落个数有关,如果当天晚上的菌落个数为 x ,那么第二天可以增加的菌落个数为 ,所以,为了尽快达成目标,只好每次都以 2 x 的速度
阅读全文
摘要:"D Xenia and Colorful Gems" 参考: "Codeforces Round 635 Editorial" 暴力解法为,但是此题数据范围为1e5,不可行。于是开始思考降低复杂度的方法。 可以知道如果最终结果为三个数,且。如
阅读全文
摘要:"C Linova and Kingdom" 参考: "Codeforces Round 635 Editorial" 首先要知道的规律是如果一个城市为工业城市,那么它的所有子节点也肯定为工业城市。可以通过反证法证明。 那么我们可以得到每一个旅游城市的贡献为(子树大小 结点深度),证明方法可以查看官
阅读全文
摘要:"E2 Three Blocks Palindrome (hard version)" 参考: "Codeforces Round 634 (Div. 3) Editorial" 这道题考的主要是前缀和,用 保存到第 i 个数 j 出现的总次数。 关键代码在这一块,首先遍历两边要取的数字是什么,然后
阅读全文
摘要:"D Edge Weight Assignment" 参考: "Codeforces Round 633 Editorial " 感觉这个题关键之处在于,要会将图化为一棵树,这样逻辑会清晰很多。 如果叶子之间距离存在有奇数(非1),那么最小的 f 值一定为3,否则为1。可以通过求解其他叶子节点到某一
阅读全文
摘要:"C Powered Addition" 要想到的东西是,每一个数只能增不能减,而且入宫前面的数字增加,后面的数字也会受到影响,即使原来是满足条件的,操作后也不一定就满足。要找到前后差别最大值,然后进行一番操作。 而且要注意的是,每秒之间的操作可以叠加产生效果。 写题时要注意分析数字之间的关系。
阅读全文