摘要:
Description 传送门 Solution 判断有无解可以使用并查集,如果最后地球和月球能处在同一个集合中,那么肯定可以到达,只是时间长短的问题。 因为多个飞船是同时飞行的,这样的问题不好直接处理。考虑星球的个数特别少,这时可以考虑按照时间轴建立分层图,$S$向每个时间点的地球连容量为$INF 阅读全文
摘要:
算[l, r]区间里所有子区间最小值的和。 对每个位置i向左知道第一个小于它的位置,向右找到第一个小于它的位置,算算贡献。 考虑可以用单调栈算。 但是如果一个区间里同一个最小值出现多次就挂了,所以考虑魔改一下,对于右边找到第一个小于它的点,对于左边找到第一个小于等于它的点并记录位置,这样的话就相当于 阅读全文
摘要:
$1.1.1$斐波那契循环节 \(gcd(fib_n, fib_m) = fib_{gcd(n, m)}\) 考虑设$n < m$,\(fib_n = a\),\(fib_{n + 1} = b\),那么对应的有$fib_{n + 2} = a + b$,\(fib_{n + 3} = a + 2 阅读全文
摘要:
懒得复制的一些东西 1.1 可重复组合 $n$个数中选择$r$个数,每个数可以重复选择多次。 方案数为$\binom{n + r - 1}$。 考虑若没有选择多次的条件,就是在$n$个数中选择一个子数列,满足$a_i < a_{i + 1}$,现在有了可以重复选择的条件,也就是说我们选择的子数列变成 阅读全文
摘要:
最大流 \(Dinic\) 直接上代码CwQwC。 #include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; const int INF = 999999999; co 阅读全文
摘要:
Description 传送门 Solution 因为每一行最多方的芯片数量是随着芯片总数量变化的,这样不好整,所以我们枚举最大数量,用网络流跑出此时最多放置多少芯片如果比我们枚举的最大数量是合法的,就更新答案。 建立$a_i$表示行,建立$b_i$表示列。 从$S$向$a_i$连容量为该行可放置芯 阅读全文
摘要:
Description 传送门 Solution 这题就是让求两个串的相同子串的个数。 众所周知,字符串所有的子串就是字符串所有的后缀的所有前缀。 利用这个性质我们可以将问题转化,变成求两个字符串的所有后缀的$lcp$的长度的和。 求后缀的$lcp$我们可以使用$SA$。 将两个字符串连接起来,中间 阅读全文
摘要:
Description 传送门 Solution 如果每个人每次都只是将一个大小为$1$的石子堆放到当前最大的石子堆里,那么当游戏不能玩的时候局面必定是有$n / m$个大小为$m$的石子堆和$\left [ n \mod m \neq 0 \right ]$个大小为$n \mod m$的石子堆。 阅读全文
摘要:
Description 传送门 Solution 不难想到这题用数位$dp$解决。 那么首先可以想到$dp_{i, j, num2, num3, num5, num7}$表示从高到低填了$i$位,是否卡位,乘积中的每个质因子数量是多少此时的方案数,$sum_{i, j, num2, num3, nu 阅读全文
摘要:
Description 传送门 Solution 首先注意到很多字符串有很多不同的方式进行划分,这样子为了避免不重不漏,就需要对其按特定形式划分。考虑到$AC$自动机上$fail$指针的含义是状态$x$的最长可识别后缀,那么我们就把划分方式定义为使划分的后半部分子串最长即可。 这样的话考虑在$AC$ 阅读全文