2019牛客暑期多校训练营(第六场)

2019牛客暑期多校训练营(第六场)


A.Garbage Classification

solved by F0_0H 20min

签到


B.Shorten IPv6 Address

solved by F0_0H 200min -4

题意 自己读

做法

  • 本也是一道签到题,但被治了
  • 需要特殊考虑的情况是,当连续零在开头或结尾时是要比在中间消去的字符少1的

复盘 倒地后的受身操作就是个憨憨。WA了第一发后,不仔细考虑逻辑上的漏洞,一直盯着代码细节看,导致耽误了不少时间。rdc 重写的那发简直是葫芦娃救爷爷操作。


D. Move

solved by rdc 280min -16 【憨憨】

题意 用容量为最小的 \(k\) 个包,装下所有物品。

做法 答案的下界为 \(max(mxval,\frac{sum}{k})\),从下界从小到大 check 答案,上界不会超过下界加 \(mxval\),因为如果让每个包恰好能多装出一个物品,那么每个包装下的物品容量上限都大于等于 \(\frac{sum}{k}\)
复杂度 \(O(nmlogn)\)

做法2 容积对 \(x,x+mxval,x+2mxval,......\) 满足二分单调性。

复盘

  • 第一反应二分。
  • 看见大家都在解体了,开始怀疑二分的单调性是否成立。
  • 开始乱搞。
    • 从小到大增加容量。每次增加极小的使得物品归属发生改变的容量。
    • 从二分算出的答案往下缩。
    • 递归式二分。
    • 这些做法一一解体。
  • 确定出一个显然下界,猜测了一下正确答案不会比下界大太多,虽然没有想怎么证明,但写了写还是苟住了这道题。

E. Androgynos

solved by rdc 190min -1

题意 构造一个 n 个点的图,与其补图同构。

一道风格有点像 Atcoder 的构造。

做法

  • \(n\)\(4k+2,4k+3\) 一定解体。
  • 冷静分析 \(n=4\) 的 case,然后就发现自己无敌了,因为对于 \(n=4k\),可以分成四个等大的 group。
  • \(n=4k+1\) ? 新增的这个点,向两个 group 连边即可。

F.K-ary Heap

upsolved

题意 给定一个K叉堆,求其排名

做法

  • 预处理F[i], 表示以i为根的子树的方案数
  • ans = 总方案 - 比输入大的序列
  • 枚举第一个比当前序列大的位置,然后找出所有闲置的子树,按照其父亲权值从大到小考虑,依次选择一些空闲的数填进去排列组合一下即可(当前枚举的位置也是一个闲置的子树,其排序权值为自身,而不是其父亲,这正是枚举比当前大的序列的原因)

H. Train Driver

upsolved

题意 随机三个点,找一个点使得三个点到该点距离和最近,求最近距离的期望。

做法

  • 枚举前两个点 \(u,v\)
  • 建炒鸡源点,向 \(x\) 连边权为 \(dis(x,u)+dis(x,v)\) 的边。
  • SSSP 即可。
  • 当然不能 dijkstra,会解体,我们可以拿着普通队列假装当做优先队列使用。
  • PS BFS 时传数组引用会比传一个高维数组,前x维快不少。

复盘

  • 三个点都确定了,是个经典问题。以这三个点为源点跑 BFS 即可,三个点的 dis 和取极小即可。
  • 前两点范围小,枚举前两个点 \(u,v\) 对点 \(x\) 计算 \(dis(u,x)+dis(v,x)\) 的值。
  • 第三个点怎么办呢?比赛时在这停滞不前了。
    • 没法枚举第三个点。
    • 建源点,最短路,这个想法一闪而过,可惜没抓住。

I. Can They Go to Galar?

题意

口胡

  • 期望线性可加性。
  • 考虑一棵树怎么做,\(p_v=p_ue_{uv}\)
  • 仙人掌的每个点双连通分量是个点,或者是个简单环。
  • 拿出点双可以 Tarjan,也可以做 DFS 生成树,用每条回边生成一个环。
  • 先计算 1 号点所在点双里,各点出现的概率,以此 BFS。

J. Upgrading Technology

solved by rdc 40min -1

题意 升级技能,升级有损耗,所有技能等级都大于等于 x 时有收益,收益损耗都可正可负。

做法 枚举技能等级的下界,枚举哪个技能取到下界,对剩下的技能预处理前缀和后缀和。

你可能感兴趣的:(2019牛客暑期多校训练营(第六场))