百度之星 2023 初赛题解

码蹄集


公园

没判断无解 WA 了一次

第五维度

*max_element() 没判空 RE 了一次

流水线搭积木

code

糖果促销

\(p,k\) 写错 RE+WA,没判 \(k=0\) WA 了一次

sol 1

二分答案,check 模拟买糖的过程。时间复杂度 \(O(T\log^{2}k)\)

sol 2

先买一个,之后买 \(p-1\) 个就能得到 \(p\) 个,答案为 \(1+\lfloor\frac{k-1}{p}\rfloor(p-1)+(k-1)\bmod p\)

或者直接从结果上看:\(k\) 颗糖会有 \(k\) 张糖纸,可以兑换 \(\lfloor\frac{k-1}{p}\rfloor\) 个糖果(最后一张不能参与),需要买 \(k-\lfloor\frac{k-1}{p}\rfloor\)
但这只能从总数上说明,还需要说明过程是合法的

数字串

抄错板子 WA 了两次

硬要做其实能猜出做法

\(k\) 个加号分成的 \(k+1\) 段一定是 \(k\) 段长为 \(1\),一段长为 \(n-k\)。等价于 \(k\) 个加号的位置一定是一段前缀和一段后缀

考虑相邻且长度都 \(>1\) 两段 \(a,b(a>b)\),把 \(b\) 的一位给 \(a\) 后的和 \(>10a>a+b\)

长为 \(n-k\) 的段最大时表达式的值最大

考虑比较表达式的值 \(-\) 数位和,等于 \(\cdots,999,99,9,0\) 对位乘上长为 \(n-k\) 的段。每个数位乘的数至少是下一位的 \(10\) 倍,所以按位比较仍是成立的

注意应该把长为 \(1\) 的段低精加起来,再和长为 \(n-k\) 的段做一次高精加

星际航行

写假 WA 了两次

先排序
如果要所有点重合,那么最优点是中位数。因为向中位数调整总距离会变小,或者说这种方案达到了下界 \(\displaystyle\sum_{i=1}^{\lfloor\frac{n}{2}\rfloor}x_{n-i+1}-x_{i}\)\(i,n-i+1\) 要重合至少需要 \(x_{n-i+1}-x_{i}\) 的距离)
如果要所有点分布到 \([p+1,p+n]\),那么根据排序不等式一定是 \(i\)\(p+i\) 最优,总距离为 \(\sum_{i=1}^{n}|x_{i}-(p+i)|=\sum_{i=1}^{n}|(x_{i}-i)-p|\)。同上,\(p\)\(x_{i}-i\) 的中位数时最优

小度的规划

假装 \(x,y\) 确定了,考虑最优策略:度度熊一定是先走到 \(x\) 并不断放金币,然后从 \(x\)\(y\) 走,不断在当前结点放金币直到满了或者小度追上来了

枚举 \(x\),可以通过一次 dfs 计算每个 \(y\) 的答案(dfs 记录度度熊走到 \(u\) 时距小度的边数、小度已经收集的金币数)

code

怪兽

\(O(p)\)

枚举怪兽王的数量 \(i\),判断方程组是否有解

\[\begin{cases} x+y=p-i \\ n_{1}x+n_{2}y=q-n_{3}i \end{cases} \]

\(O(\log p)\)

先消掉 \(x\)\((n_{2}-n_{1})y+(n_{3}-n_{1})z=q-n_{1}p\)。exgcd 解不定方程求 \(z\) 的最值,需要判的东西比较多

循环同构

哈希

注意到 \(|s_{i}|\) 只有根号种取值,所以可以直接枚举 \(t\) 的子串并用哈希表计算同构的 \(s_{i}\) 个数

时间复杂度 \(O(n\sqrt{n})\)。需要手写哈希表

广义 SAM

跑步

数个数所以位置相同的不能直接合并成一个,WA
每只猫会和它后面第一个速度 < 它的猫合并,不能只判断它的下一只猫,WA

红色括号

只考虑右括号。左括号等价于反串的右括号

令左括号为 \(1\),右括号为 \(-1\),则严格前缀 \(\min\) 位置的右括号不能匹配
线段树实现区间加,维护严格前缀 \(\min\) 处信息

第三场

posted @ 2023-09-04 20:40  ft61  阅读(252)  评论(0编辑  收藏  举报