第一次打abc,记录一下
A | Round One | 2 sec | 1024 MB |
B | Strings with the Same Length | 2 sec | 1024 MB |
C | Snack | 2 sec | 1024 MB |
D | Brick Break | 2 sec | 1024 MB |
E | Double Factorial | 2 sec | 1024 MB |
F | Playing Tag on Tree | 2 sec | 1024 MB |
6/6,rank 182 Rating 859 + 355 = 1214
确实跟cfdiv3差不多
A
输入123中两个数,输出另外一个数
$$
res = 6 - x - y
$$
B
输入两个串,交叉输出
C
求AB的lcm
$$
res = a / gcd(a,b) *b
$$
D
给一个序列,求删除一些数,使得剩余的序列是$1\to k$的形式
求最长上升连续子序列
$dp[i]$表示$1\to i$有没有出现过,扫一遍整个序列
for (int i = 1; i <= n; ++i) {
if (dp[a[i] - 1]) dp[a[i]] = 1;
}
取最大的$i$满足$dp[i]=1$即是保留的序列
E
定义隔项阶乘函数:
$$
f(n) = 1 (n < 2) \
f(n) = n * f(n - 2) (else)
$$
求$f(n)$末尾0的个数
分奇偶讨论即可
若$n$为奇数,显然$f(n)=135\dotsn$
没有2因子,不会出现末尾0输出0
若$n$为偶数,显然$f(n)=246810\dotsn$
2因子数量总是大于5因子,相当于求$1\to n/2$中5因子的数量
F
给一棵树,x和y博弈,首先x在u点,y在v点,游戏结束条件是x和y重合,x先动,x希望游戏更晚结束,y希望游戏更早结束,求y在游戏结束前走的步数
设游戏在p点结束,那么$dist(p,u) \le dist(p,v)$显然成立,当这个条件满足时可以观察出必然可以走到这个点(树上两个点的距离固定而且路径固定),所以是个充要条件。
由于x先动要求答案尽量大,所以取满足条件的$max(dist(p,v))$即可。