随笔分类 - 思维题
摘要: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 ]可以直接删掉。 最后剩下一个先增后减的序列, 除了最大的两个都能加上。
阅读全文
摘要: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 从大的质因子开始贪心, 如果有偶数个则直接组合, 如果是奇数个留下那个质数的两倍, 其余两两组合。
阅读全文
摘要: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)
阅读全文
摘要:我发现我构造题真的不会写, 想了好久才想出来。。 我们先把n = 2, 所有数字相等, 所有数字等于0的都特判掉。 找到一个b[ i ] > b[ i - 1 ]的位置把它移到最后一个位置, 并且使其a[ i ] = b[ i ]然后从后往前构造。
阅读全文
摘要:Ants on a Circle 感觉这个思路好巧妙啊。 我们能发现不管怎么碰撞,初始态和最终态蚂蚁间的相对顺序都是一样的, 并且所占的格子也是一样的, 那么我们就只需要 找到其中一个蚂蚁的最终位置就能确定所有蚂蚁的位置了, 我们考虑找初始为止离0最近的那个蚂蚁的最终位置,我们能发现 蚂蚁从m-1-
阅读全文
摘要:Ehab and a component choosing problem 如果有多个连接件那么这几个连接件一定是一样大的, 所以我们先找到值最大的连通块这个肯定是分数的答案。 dp[ i ]表示对于 i 这棵子树包含 i 这个点的连通块的最大值, 就能求出答案, 然后知道最大值之后再就能求出几个连
阅读全文
摘要:Graph Cutting 不会写。。 dfs的过程中把回边丢到它的祖先中去, 回溯的时候两两配对。感觉好神奇啊。
阅读全文
摘要:New Year and Rainbow Roads 思路:我们考虑两个绿点之间的红点和蓝点, 首先把这些红点和蓝点接到绿点上面绝对不会超过绿点距离的两倍。 然后我们先把两个绿点连上, 再把绿点经过蓝点到绿点的线连上, 绿点经过红点到绿点的线连上, 这时距离为3倍的绿点间距离, 然后我们可以在第二条
阅读全文
摘要:Anton and Ira 我们把点分为三类, 向左走的, 向右走的, 不动的。 最完美的情况就是每个点没有走反方向。 每次我们挑选最右边的向右走的去把向左走的交换过来,这样能保证最优。
阅读全文
摘要:New Year Tree 我们假设当前的直径两端为A, B, 那么现在加入v的两个儿子x, y。 求直径的话我们可以第一次dfs找到最远点这个点必定为直径上的点, 然而用这个点第二次dfs找到最远点, 这两个点就是直径。 因为A, B现在是直径的两端, 那么从v点dfs找到的最远点必定为A或者B,
阅读全文
摘要:LIS of Sequence 我们先找出那些肯定不会再LIS里面。 然后我们从前往后扫一次, 当前位置为 i , 看存不存在一个 j 会在lis上并且a[ j ] > a[ i ], 如果满足则 i 能被省掉。 在从后往前扫一遍就做完啦。
阅读全文
摘要:348B - Apple Tree 我们设最后答案为 x , 我们我们就能用x表示出所有节点下面的苹果个数, 然后用叶子节点求lcm, 取最大的可行解。
阅读全文

浙公网安备 33010602011771号