02 2019 档案
摘要: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三题。。。 我们在主席树 || 线段树上维护每个数的右边和它一样的数在哪里, 然后就变成了区间求最大值。 注意加进去的时候要把它右边一样的数的信息删掉。 我懒得离线数据就写了个主席树。
阅读全文
摘要:A - Abstract Art
阅读全文
摘要: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 这个点的连通块的最大值, 就能求出答案, 然后知道最大值之后再就能求出几个连
阅读全文
摘要:A - Secret of Chocolate Poles 队友写的。 好像水水的。 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unrol
阅读全文
摘要:Graph Cutting 不会写。。 dfs的过程中把回边丢到它的祖先中去, 回溯的时候两两配对。感觉好神奇啊。
阅读全文
摘要:Dima and Trap Graph 枚举区间的左端点, 然后那些左端点比枚举的左端点小的都按右端点排序然后并查集去check
阅读全文
摘要:Kleofáš and the n-thlon 我们可以用dp算出比当前这个人得分少的概率, 然后人数乘概率就好啦。 dp[ i ][ j ]表示进行了 i 轮 得分为 j 的概率, 因为每个人都是独立地这样算是可以的, 然后前缀和优化一下。
阅读全文
摘要:Cats Transport 出发时间居然能是负的,我服了。。。 卡了我十几次, 我一直以为斜率优化写搓了。 我们能得出dp方程式 dp[ i ][ j ] = min(dp[ k ][ j - 1 ] + hs[ i ] * (cnt[ i ] - cnt[ j ]) - sum[ i ] + s
阅读全文
摘要:New Year and Rainbow Roads 思路:我们考虑两个绿点之间的红点和蓝点, 首先把这些红点和蓝点接到绿点上面绝对不会超过绿点距离的两倍。 然后我们先把两个绿点连上, 再把绿点经过蓝点到绿点的线连上, 绿点经过红点到绿点的线连上, 这时距离为3倍的绿点间距离, 然后我们可以在第二条
阅读全文
摘要:裸的cdq, 没啥好说的, 要注意mid左边和mid右边的a相同的情况。
阅读全文
摘要:Tree-String Problem 网上的dfs + kmp 复杂度就是错的, 除非算出根据下一个字符直接转移Next数组直接转移, 而求出Next[ i ][ 26 ]数组和丢进AC自动机里面没有区别。。 然后我的AC自动机还写麻烦了。。 我把全部都求进去求fail然后沿着fail推到目标串,
阅读全文
摘要:Team Work 发现网上没有我这种写法。。 i ^ k我们可以理解为对于每个子集我们k个for套在一起数有多少个。 那么我们问题就变成了 任意可重复位置的k个物品属于多少个子集。 然后我们枚举k个物品所占位置的个数 i , 然后需要计算有多少种方案能把k个不同物品放入i个桶中。 这个东西可以用d
阅读全文
摘要:Caisa and Tree 在dfs的过程中枚举质因子瞎搞搞就好啦, 不过这个题意真的表述不清。。
阅读全文
摘要:ZS and The Birthday Paradox 感觉里面有好多技巧。。
阅读全文
摘要:Anton and Ira 我们把点分为三类, 向左走的, 向右走的, 不动的。 最完美的情况就是每个点没有走反方向。 每次我们挑选最右边的向右走的去把向左走的交换过来,这样能保证最优。
阅读全文
摘要:New Year Tree 我们假设当前的直径两端为A, B, 那么现在加入v的两个儿子x, y。 求直径的话我们可以第一次dfs找到最远点这个点必定为直径上的点, 然而用这个点第二次dfs找到最远点, 这两个点就是直径。 因为A, B现在是直径的两端, 那么从v点dfs找到的最远点必定为A或者B,
阅读全文
摘要:Lucky Queries 感觉是很简单的区间合并, 但是好像我写的比较麻烦。
阅读全文
摘要:LIS of Sequence 我们先找出那些肯定不会再LIS里面。 然后我们从前往后扫一次, 当前位置为 i , 看存不存在一个 j 会在lis上并且a[ j ] > a[ i ], 如果满足则 i 能被省掉。 在从后往前扫一遍就做完啦。
阅读全文
摘要:Arthur and Brackets 区间dp, dp[ i ][ j ]表示第 i 个括号到第 j 个括号之间的所有括号能不能形成一个合法方案。 然后dp就完事了。
阅读全文
摘要:Information Graph 把询问离线之后就能随便搞了, 去check一下是不是祖先, 可以用倍增也能用dfs序。
阅读全文
摘要:Little Elephant and LCM
阅读全文
摘要:Array GCD 最后的序列里肯定有a[1], a[1]-1, a[1]+1, a[n], a[n]-1, a[n]+1中的一个,枚举质因子, dp去check
阅读全文
摘要:Game on Tree 这种题好像在wannfly训练营讲过, 我怎么又不会写啦, 我好菜啊啊啊。 我们按每个点算贡献, 一个点有贡献就说明它是被选中的点, 那么它被选中的概率就为1 / depth
阅读全文
摘要:Devu and Flowers 如果不考虑限制答案为 C(s + n - 1, n - 1), 即把s个球分到n个箱子中,箱子可以为空的方案数。 壮压枚举几个超过了, 容斥一下。
阅读全文
摘要:GukiZ and Binary Operations 显然我们要拆位, 因为每位都独立, 然后问题就变成能用dp求的东西,然后用矩阵快速幂优化一下。 注意mod为1的情况。
阅读全文
摘要:55D - Beautiful numbers 把lcm离散化一下就能过了。
阅读全文
摘要:D - Jzzhu and Numbers 这个容斥没想出来。。。 我好菜啊。。 f[ S ] 表示若干个数 & 的值 & S == S得 方案数, 然后用这个去容斥。 求f[ S ] 需要用SOSdp
阅读全文
摘要:348B - Apple Tree 我们设最后答案为 x , 我们我们就能用x表示出所有节点下面的苹果个数, 然后用叶子节点求lcm, 取最大的可行解。
阅读全文
摘要:因为只有奇偶之间有操作, 可以看出是二分图, 然后拆质因子, 二分图最大匹配求答案就好啦。
阅读全文
摘要:C - Kalila and Dimna in the Logging Industry 很容易能得到状态转移方程 dp[ i ] = min( dp[ j ] + b[ j ] * a[ i ] ), 然后斜率优化一下。 一直以为炸精度了, 忽然发现手贱把while 写成了if 。。。。
阅读全文
摘要:C - Points, Lines and Ready-made Titles 把行列看成是图上的点, 一个点(x, y)就相当于x行 向 y列建立一条边, 我们能得出如果一个联通块是一棵树方案数是2 ^ n - 1 否则是2 ^ n。 各个联通块乘起来就是答案。
阅读全文
摘要:C - Division 思路:我们考虑到一点,从大往小取得顺序是不会有问题的,所以可以直接主席树,但是开不下空间,我们可以log分段求。 #include<bits/stdc++.h> #define LL long long #define fi first #define se second
阅读全文

浙公网安备 33010602011771号