02 2017 档案
摘要:建立后缀树,用线段树合并求出每个节点子树内部最靠前和最靠后的后缀位置以及相邻后缀距离的最大值,同时求出每个子串能完整匹配的最长后缀的长度。 对于一个子串,如果其长度不小于相邻后缀距离的最大值,且最靠后的位置加上最长匹配的后缀长度不小于,那么就说明可以从中间开始覆盖到尾部。 对串做KMP,求出每
阅读全文
摘要:与横线以及竖线的交点个数很容易求,那么只要求出横线竖线交点与运动轨迹的交点数即可。 运动轨迹可以划分成若干条贯穿边界的斜线,对于第一条和最后一条,可以用bitset暴力统计。 对于中间的部分,斜线都是完整的,可以FFT预处理。 时间复杂度。
阅读全文
摘要:设表示考虑了前个数字,增加了根火柴,删掉了根火柴是否可能,用bitset加速DP。 然后设表示增加了根火柴,删掉了根火柴的最小代价,枚举移动次数进行更新。 决策满足单调性,故可以分治求解。 设,则时间复杂度为$O(
阅读全文
摘要:根据Hall定理,若存在一个区间满足内部需求数内部石子数,则不存在完美匹配。 由于区间互不包含,所以设: 表示右端点的区间的容量之和。 表示左端点的区间的容量之和。 表示前个位置的石子数之和。 则区间的:
阅读全文
摘要:设表示往上通过一趟公交车能到达的深度最小的祖先,这可以通过将公交车按深度从小到大排序后用并查集染色得到。 对于每个询问: 。 是的祖先 交换,变成。 是的祖先: 在上倍增即可。 $4.x
阅读全文
摘要:考虑从到枚举的通关楼层。 设表示通关层时最多能得到多少金币,因为金币数非负,所以也可以看作最多通关多少层。 当的通关楼层往上多的时候,这把钥匙必须给。 如果这把钥匙还剩把,那么说明: 某些楼层以上都不能到达,对应
阅读全文
摘要:首先,如果这个图本身就不存在欧拉回路,那么显然无解。 对于每个子串: 1.如果里面有不存在的边,那么显然无解。 2.如果里面有一条边重复出现,那么显然也无解。 3.对于每条边,维护其前驱与后继,若前驱或后继超过个,那么显然也无解。 如此所有边将形成一条条链或者环的结构,如果存在环,那么显然也无
阅读全文
摘要:将选手和询问按照年龄排序,即可去掉年龄的限制。 将所有选手按水平排序后维护线段树,显然最优解一定是从大到小贪心选择。 线段树上每个节点维护: 不选/选的时候,选不选。 不选/选的时候,中间选了几个。 不选/选的时候,中间选
阅读全文
摘要:将图黑白染色,每个点拆成两个点,分别表示水平和竖直方向,再增加一个点以控制流量,那么每个格子都需要找两个方向去连接。 到每个黑点的控制点连边,流量,费用; 控制点向两个方向的点各连两条边,第一条流量,费用,第二条流量,费用; 然后两个方向的点分别向对应白点连
阅读全文
摘要:设表示前个物品买了个,消耗个钻石,最少花多少钱,可以通过简单的DP求出。 枚举拥有的钻石数以及最多能购买的物品数的下界,那么钱数的下界是定值。 将个箱子折半搜索,按钻石数分组并排序,枚举左半边每种方案,在右半边双指针求出总概率即可。 时间复杂度$O(n
阅读全文
摘要:首先预处理出表示长度为的序列,第一个位置是,最后一个位置是时合法的方案数。 从后往前枚举LCP以及那个位置应该改成什么。 用线段树维护区间内最左最右的已经确定的位置,以及区间内的合法方案数。 合并的时候只需要将左右儿子的答案乘起来,然后再乘以左儿子最右到右儿
阅读全文
摘要:首先预处理出表示第位是字符的字符串集合。 考虑枚举答案,那么模式串中模相同的字符都要按顺序在同一行出现。 设表示第列开始出现模为的那些字符是否有可能,可以通过bitset取交实现。 然后枚举模式串出现的列进行贪心匹配
阅读全文
摘要:将每条双向边拆成两条单向边,若两条边中至少存在一条边使得删掉它之后图中SCC个数不变,则这条边可以定向。 将边中间加上点,变成删点问题。 对于每个SCC单独考虑,随便选择一个不是拆点出来的点S作为源。 则在正图或者反图的Dominator Tree上的所有非叶子节点均会影响连通性。 用Lengaue
阅读全文
摘要:不妨设是唯一可以看到的颜色,考虑一维序列的情况。 设表示考虑了前个位置,第个位置的高度是,最高高度是,已经用了个,个非的方案数,转移则是要么使自己的高度,要么考虑下一个位置。 由此可以在
阅读全文