A Sasha and His Trip
$1$ 到 $n$ 个地点排成一行,相邻两个距离为 $1$,现在要从 $1$ 不回头走到 $n$。
走一个单位距离,消耗一点油,油箱最大容量为 $v$,每个点有一个加油站,第 $i$ 点加油的费用为 $i$ 块钱每升,求最小花费。
一开始尽量加满,然后每个位置如果油箱有空余且不能支持走完全程,就加油。
写错加油的容量,过了好久才过 T^T。
B Sasha and Magnetic Machines
给一个一个序列,选两个数 $a_i$ 和 $a_j$,选一个 $a_j$ 的因子 $x$,将两个数变成 $xa_i$ 和 $a_j \over x$,求序列总和最小能变成多少。
式子写出来
贪心的想,$a_i$ 肯定选最小的,$j$ 枚举即可。
C Sasha and a Bit of Relax
给一个序列,求有多少长度为偶数的连续子序列,满足序列前一半和后一半的异或和相等。
其实这个一半是骗你的,往一半上想就凉了。
实际上,就是求长度为偶数的区间,异或和为 $0$,统计一下每种异或前缀和的个数即可。
D Sasha and One More Name
将一个回文串,切几刀,拼成一个和一开始不同的回文串,求最小切几刀。
首先,判断出无解的情况,显然如果前一半每个字母都相同,不管怎么切都不会弄成一个不同的回文串。
对于一个回文串,他肯定存在一个前缀不是回文串,对称地切两刀,交换前后缀位置就是一个新的回文串,且与之前不同,所以刀数最多为 $2$。
所以就要判断能不能切一刀,可以发现这个串是一个回文循环串,由于 $1 \le n \le 5000$,暴力即可。
F Sasha and Interesting Fact from Graph Theory
求满足条件的 $n$ 个点带边权的树个数,边权取值范围是 $1$ 到 $m$,满足给定了 $a$ 和 $b$,树上 $a$ 到 $b$ 路径长度恰好为 $m$。
先只考虑 $a$ 到 $b$ 的路径,我们可以枚举这个路径上的边数 $i$,然后相当于将 $m$ 划分成了 $i$ 个数,由插空法可知有 $m-1 \choose i-1$ 种情况。路径上有 $i-1$ 个点可以随意选择,方案数为 $(i-1)!{n-2 \choose i-1}$。剩下 $n-1-i$ 条边的边权可以随意选择,方案数为 $m^{n-i-1}$。最后一部分就是求剩下的点挂在这条链上的树的个数。
由 Cayley定理,我们知道 $n$ 个带标号的点组成 $k$ 棵无根树的森林的方案数为 $k n^{n-k-1}(1 \le k \le n-1)$。
我们可以考虑将前一步选出来的路径上 $i+1$ 个点拿出来,加上剩余的点组成 $i+1$ 棵无根树。对于每棵无根树,为避免重复,将树上标号最小点设置定为根,这些根按第一部分连成树链即可。因此,只需要在最后乘上 $(i+1)n^{n-i-2}$。