随笔分类 - Codeforces
摘要:Treeland Tour 离散化之后, 每个节点维护上升链和下降链, 感觉复杂度有点高, 为啥跑这么快。。
阅读全文
摘要:Freelancer's Dreams 我们把每个二元组看成是平面上的一个点, 那么两个点的线性组合是两点之间的连线, 即x * (a1, b1) + y * (a1, b1) && x + y == 1, 那么n个点的线性组合就是一个凸包, 那么我们求出凸包和(0, 0)到(p, q)直线的交的那
阅读全文
摘要:Name That Tune 刚开始我用前缀积优化dp, 精度炸炸的。 我们可以用f[ i ][ j ] 来推出f[ i ][ j + 1 ], 记得加加减减仔细一些。。。
阅读全文
摘要:Darth Vader and Tree 感觉是个很裸的矩阵快速幂, 搞个100 × 100 的矩阵, 直接转移就好啦。
阅读全文
摘要:Shifting 感觉这题被智力打击了。。 刚开始我想的是对于每个位置我们可以暴力找出最后的位置在哪里。 因为对于当前位置p, 在进行第x步操作时, 如果p % x == 1 则 p = p + x - 1 否则 p = p - 1 并且第一步只有nlogn次, 所以我们可以暴力找出p % x ==
阅读全文
摘要:Lizard Era: Beginning 折半之后搜就完事了, 直接存string字符串卡空间, 随便卡卡空间吧。
阅读全文
摘要:Bear and Square Grid 枚举k * k 的位置, 然后接上它周围白色连通块的数量, 再统计完全在k * k范围里的连通块, 这个只要某个连通块全部的方格 在k * k里面就好, 并且k * k是一行一行移的, 所以可以优化到n ^ 3。
阅读全文
摘要:Edges in MST 在用克鲁斯卡尔求MST的时候, 每个权值的边分为一类, 然后将每类的图建出来, 那些桥就是必须有的, 不是桥就不是必须有。
阅读全文
摘要:Artem and Array 经过分析我们能发现, 如果对于一个a[ i ] <= a[ i + 1 ] && a[ i ] <= a[ i - 1 ]可以直接删掉。 最后剩下一个先增后减的序列, 除了最大的两个都能加上。
阅读全文
摘要:Karen and Supermarket 感觉就是很普通的树形dp。 dp[ i ][ 0 ][ u ]表示在 i 这棵子树中选择 u 个且 i 不用优惠券的最小花费。 dp[ i ][ 1 ][ u ]表示在 i 这棵子树中选择 u 个且 i 用优惠券的最小花费。 注意这个转移总的合起来是O(n
阅读全文
摘要:Greg and Friends BFS的过程中维护一下方案数。 我个人感觉不是很好想, 但是写出来之后怎么感觉这题这么SB啊啊。
阅读全文
摘要:我好菜啊啊啊。。 循环以下操作 1.从队列中取出一个顶点, 把哪些没有用过的边全部用当前方向。 2.看有没有点的入度和 == 出度和, 如果有将当前的点加入队列。 现在有一个问题就是, 有没有可能队列中为空还没有更新完毕, 这是不可能的, 我们能这么考虑, 其中一个点x的入度还没有满, 那么我们能推
阅读全文
摘要:Trains and Statisti 我们考虑从一个点出发到达所有它后面所有位置所需要的次数和, 如果我们当前在x号点已经走了gg步, 那么我们肯定将x能到达的那些没走过的点标为gg + 1, 然后找到x 到a[ x ]上的a值最大的点y, 然后 x 走到 y, 然后重复上述过程。 那么我们用一个
阅读全文
摘要:The Great Mixing 化简一下公式后发现, 问题变成了, 取最少多少数能使其和为1, bitset优化一下背包就好啦。 题解中介绍了一种bfs的方法没, 感觉比较巧妙。
阅读全文
摘要:Jzzhu and Apples 从大的质因子开始贪心, 如果有偶数个则直接组合, 如果是奇数个留下那个质数的两倍, 其余两两组合。
阅读全文
摘要:Elongated Matrix 预处理一下两两之间的最小值, 然后直接dp。
阅读全文
摘要:区域安全的check方法就是, 每行都有哨兵或者每列都有哨兵,然后我们用y建线段树, 维护在每个y上的哨兵的x的最值就好啦。
阅读全文
摘要:One Occurrence 为什么我半年前这么菜呀, 这种场只A三题。。。 我们在主席树 || 线段树上维护每个数的右边和它一样的数在哪里, 然后就变成了区间求最大值。 注意加进去的时候要把它右边一样的数的信息删掉。 我懒得离线数据就写了个主席树。
阅读全文
摘要:Ray in the tube 感觉是套路题。。 如果确定一个差值x我们如何取确定答案呢, 我们把a[ i ] -> a[ i ] % (2 * x), 把b[ i ] -> (b[ i ] + k) % (2 * x), 值相同的都能同时射到。 同时我们能发现, 对于一个差值x如果它有奇数因子,
阅读全文
摘要:首先我们能注意到两个数x, y (0 < x , y < m) 乘以倍数互相可达当且仅当gcd(x, m) == gcd(y, m) 然后我们可以发现我们让gcd(x, m)从1开始出发走向它的倍数一个一个往里加元素就好啦, 往那边走 这个可以用dp求出来, dp[ i ] 表示 gcd(x, m)
阅读全文