随笔分类 - Codeforces题解
昱星神川龙王殿,未存冥海夜神宫
摘要:### A - Destroy the Colony 首先发现,英文字母一共只有 个,算上大小写, 。那么我们就相当于是挑选一个字母子集,使得其总和为 ,然后分别全排列。 但是我们发现,最后的全排列是和前面的子集没有关系的,因为根据多重集,答案等于 $\d
阅读全文
摘要:### 56E - Domino Principle 我们发现,倒下的多米诺骨牌一定是一个区间,否则如果中间空了一段,前面就一定不能影响到后面。所以可以设 表示第 块牌倒下,倒下的最右的牌。然后每块牌影响的范围就是 。我们计算它能直接使得倒下的牌是哪些区间,$r
阅读全文
摘要:题意:构造一个 大小的锦标赛图,即每两点之间恰有一条有向边,满足任意点对 ,都存在一条从 到 ,长度不超过 的路径。 #### 方法一 考虑奇数情况,假设我们的点是在环上排列的,那么我们对任意的跨越不超过半个环的边都连上,也就是说,我们把点看成圆上的若干个
阅读全文
摘要:大模拟。 首先的难度在于理解题意: 打电话的地点分为镇、地区、超级地区三级。其中,一些地区是被网络连接的。 电话号码的前缀由 地区号+镇号 组成。它们可以是不等长的,但是整个电话号码的长度是 。一个镇可能有多个镇号,不同地区的镇可以拥有相同的镇号,但地区号是唯一的。 同时,电话分为四种来源:
阅读全文
摘要:先考虑正着做,我们只考虑整个 序列中出现的第一个子序列 。 这样,我们就是要往 中插入 个数,其中 和 之间不能有 (否则就会有更靠前的子序列)。 前面不能有 , 后面什么都可以有。 我们发现,
阅读全文
摘要:本质不同的算法主要有两种:对子图大小根号分治和类启发式均摊。此外还有很多实现上的差别。 #### 对子图大小根号分治 在线做法: 我们发现,把每个颜色的边和它们的顶点取出为一个子图,所有子图大小的和是 级别的。那么我们就可以根号分治。 首先,要预处理每个颜色子图下的连通块。可以用并查集
阅读全文
摘要:尝试使用哈希。首先,我们可以发现,我们去枚举最终答案矩形的长和宽。然后我们会发现宽是关于长单调减少的。那么我们就可以写一个双指针,每次检查对当前的 ,是否存在长为 ,宽为 的相同子阵。因为是双指针,所以枚举的复杂度是 的。 然后考虑匹配。我们发现,我们可以使
阅读全文
摘要:题意:给出一个无向网络,求其最大费用流(不是最大费用最大流) 首先考虑无向图怎么解决。 先尝试对每个边构造一个子结构,具体方法是对每个边 新增两个点 ,然后从 分别向 连有向边, 向 连有向边。 和 之间连流量为
阅读全文
摘要:有点厉害。 首先给一个 的做法。我们先对所有串建立 ,然后对于每个 ,我们先预处理对于每个节点对应的 集合,多长的子串可以满足条件。 然后,我们把 串往当前的自动机输入,每次会来到一个 集合。同时再输
阅读全文
摘要:我们首先考虑建图。我们把每个点向它的所有变换连边,把每个变换往它产出的所有点连边,同时点到变换的边有边权,就是变换中 的个数。 我们首先处理最小值。我们发现,没有出度的点和变换可以一开始就有结果。只要一个点有一个变换是可以有结果的,这个点就可以有结果。变换则不然,必须所有点都有结果,变换才
阅读全文
摘要:首先考虑 表示当前连通了 中所有关键点,并且当前连通的非关键点包含 的最小代价。 然后考虑如何转移。我们先用 预处理所有点对之间的最短路 。同时,每次选取的两个用于合并的关键点集合一定没有交集,所以我们可以直接枚举
阅读全文
摘要:首先我们考虑先把区间处理掉,也就是对于每个 轴区间,只保留在这个区间上最早出现的进行贡献,使得每个区间只有一段城墙会贡献到。这个可以离散化然后线段树来处理。 其次,我们发现,对于在时间 上出现的 区间(这里我们说的都是指离散后 的区间,
阅读全文
摘要:比较迷糊,比较乱搞。 我们考虑从上往下进行 , 表示从顶上水槽 最多的流量。然后我们发现,每个高度,能用来进行转移的区间一定没有被完全覆盖。也就是,只有在遮挡关系中被覆盖的区间可能被用来转移。 同时,每个区间还是有要求的,比如 的 部分后来
阅读全文
摘要:首先我们通过翻转坐标系强制要求光的方向是正方向。翻转坐标系就翻转矩阵的对应维度就可以了。 然后我们发现,如果不考虑遮挡关系,只考虑平面,对于每个位置的方块而言,能照到它的光是一段区间。就是能照到 和能找到 的光。 我们考虑把光映射到光所在直线在 轴上的
阅读全文
摘要:比较毒瘤的一道模拟。 首先,我们考虑如何处理 define,我们发现,其中不会出现环,并且所有冲突的定义以第一个为准,那么就想到并查集,将 的父亲定成 。只不过我们平时的并查集是无向的,这里是有向的,也就是谁是根是重要的。 我们先给所有的定义和被定义的变量映射到一个值,然后用并查集维护
阅读全文
摘要:我们发现,这其实就是一个完全图合并的问题。如果一个子图不是完全图,就一定要把它们合并起来。 我们考虑 表示只对当前集合 的点进行操作,使得 集合是完全图的最小步数。初始状态是枚举所有的 检测是否是完全图。然后我们每次枚举和当前集合的加入集合
阅读全文