标签: 构造

  • MOCK NOIP 20221014 日志

    签到题看了半个小时;T2 没有考虑到只需要包含最优解即可,非要确定另一多余状态,只拿了部分分。

    T3 只会考虑 “$x, y$ 的公共祖先中含有 $l$ 的概率”,不会高效计算“当二者的 $\operatorname{lca}$ 恰为 $l$ 时”的期望/概率与总长之和的乘积,仍然只有暴力分。

    T4 无思路。

    一句话(?)题解

    A – 签到题

    可以简单用归纳法证明,仅有所有管道中通行时间最大的会阻塞进度,是为两数据包到达终点的时间间隔。算出首个数据包到达的时间再将前者相加即可。

    B – 简单题

    第一反应是类似笛卡尔树一样,在区间上依次合并区域最大值并计算贡献。$n \leq 300$ 似乎也在暗示这是一个区间 DP。

    $\text{48 pts}$ 做法

    设 $f(l,r,\text{mx})$ 表示“考虑完成区间 $[l,r]$ 内所有贡献,且最大值恰好为 $\text{mx}$”的最大权值和。转移时从小到大枚举最大值 $\text{mx}=V_{i,j}$,枚举包含它的区间,尝试转移 $$f(l,r,\text{mx})\leftarrow f(l,i-1,\text{mx}’)-C_{i,j}+\text{mx}\cdot \operatorname{calc}(l,r,i)+f(i+1,r,\text{mx}”)$$,其中 $\operatorname{calc}(l,r,i)$ 计算 $\sum_{l’=l}^{i}\sum_{r’=i}^{r}Q_{l’,r’}$,可以由二维前缀和实现。稍加演算会发现,这样转移不会重复计算贡献。时间复杂度 $\operatorname{O}(\sum K_{i}N^2)$。 (更多…)

  • CF1624D – Finding Zero – 题解与思路重现

    给大家表演一个一场下青

    CodeForces Round 770 Div.2 Problem D – Finding Zero

    一道非常有意思的交互和构造题。

    考虑能否固定两个数$x, y$,通过它们的相对大小关系,确定其他数中是否存在$0$或最大值$a_{\text{max}}$。

    经过一番推导,我们发现,设$x \geq y$的情况下,对于三元组$(a_i=x, a_j=y, a_k=z)$,有$$g(i, j, k)\newline
    =\max(a_i, a_j, a_k) – \min(a_i, a_j, a_k)=
    \begin{cases}z-y, & z > x \\
    x-y, & z \in [y, x]\\
    x-z, & z < y\end{cases}$$。所以,设$x=6, y=4$以上式结果为因变量,$z$为自变量,应有以下图像:

    (更多…)

  • 一道由数学作业延伸出的构造题

    先放原题:

    将正整数$1, 2, 3, \dots, 30$划分为$k$组,使得每组内任意两数之和不等于任何完全平方数。求$k$的最小值。(《培优新方法》八年级数学 §23 第3题)

    嗯,对手搓暴力枚举来说数据确实大了点。抱着“反正也不可能求出正解”的心态,我尝试遍历了这些数,在第$i$遍历时,将符合要求的数依次加入第$i$组。具体来讲,如果数$g$和第$i$组里的任何数之和都不是完全平方数,则将$g$加入该组并在随后的遍历中忽略。最终一共遍历了$3$遍才将所有数分完,所以我大剌剌填了$3$上去。往后一翻——答案就是$3$。

    然后某人发表暴论:“这有点像一道编程题。我在一本讲程序设计的书上看到过。”我同意。于是就有了这篇水帖。

    (更多…)