牛客小白月赛22补题
阿楚姐骗我们这场只有div2A~C难度
比赛传送门
题解传送门,目前似乎没有官方题解
A.Maximize The Beautiful Value
题意
给你长度为$n$的数组$a_1\dots a_n$,和一个整数$k$,你必须从数组中选一个数,并将它向前移动$k$位,使得$F(n)=\sum_{i=1}^ni\times a_i$的值最大。
思路
前缀和+枚举。
先在读入时预处理出前缀和,计算出原本的$a$数组对应的$F(n)$,记为$M$。
当枚举到第$i$位时,因为第$i$位的移动使得前面的$k$位向后移一位,而自身又向前移动了$k$位,相对于$M$产生的变化即为$-a_i*k+\sum_{j=i-k}^{i-1}a_j$,记录其中的最大值即为答案
时间复杂度$O(n)$
代码
1 |
|
B.身体训练
题意
这道题原题题面很坑……建议不看自己猜题意
$n$个人排成一竖排以速度$v$跑步,正常队形中每两个人间隔为$u$,每个人有超车速度$c$和衰减速度$d$,当一个人在队伍末尾时,此人开始以速度$c-(j-1)\times d$进行超车,这里的$j$表示此人是第$j$个开始超车的。
现在$n$个人初始位置随机,求每个人都进行一次超车所用的时间期望。
坑点:当上一个人还在超车过程中,当前队伍末尾的人是不开始超车的;而当上一个人到达了新的排头,末尾的人立即开始进行超车。
思路
计算出每个人以每种可能的出发次序达到队首的所用时间并求和,最后除以$n$,即为答案。
时间复杂度$O(n^2)$
代码
1 |
|
C. Borrow Classroom
题意
一棵$n$个节点的树,$1$为树的根节点,$q$个询问,每个询问三个数字$a,b,c$,表示
- 同学行走的路径为$b\Rightarrow c\Rightarrow1$,保证$c\neq 1$
- 老师初始位置为$a$
询问老师是否能在同学到达$1$节点前追上同学
思路
很明显这是个LCA的题,符合题意的情况有两种
记$d1$为老师到$1$节点的路程,$d2$为同学先到$c$再到$1$行走的路程。
- 如果$d1<d2$,则说明老师可以先到$1$节点,从而截住同学
- 如果$d1=d2$,如果老师和节点$c$在关于$1$的同一棵子树上,则说明老师和同学会在到达$1$节点之前,即$lca(a,c)$相遇,否则无法在同学到达$1$之前截住
注意:多组输入,不用$memset$见祖宗
单组时间复杂度$O(n+qlogn)$
代码
1 |
|
E.幸运数字Ⅱ
题意
定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如47、744、4都是幸运数字而5、17、467都不是。
定义$next(x)$为大于等于$x$的第一个幸运数字。
给定$l,r$,求出$next(l) + next(l + 1) + … + next(r - 1) + next(r)$。
思路
使用dfs枚举构造出所有幸运数字,排序后在数组中二分查找当前数字的幸运数字
时间复杂度估计为$O(2^{10}+10\times 2^{10}+10\times log_{10}^{r-l})$?
代码
1 |
|