码迷,mamicode.com
首页 > 其他好文 > 详细

ARC 103

时间:2020-02-15 11:44:49      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:注意   个数   line   最大   存在   找不到   test   block   solution   

(很早做过题不知道为什么现在才写

题目链接

C

没什么好说的 QAQ

Code

D

Description

给出 \(n\) 个点,要求构造一个序列,使得对于每个点,可以给序列中的每个数指定一个方向(上/下/左/右),使得可以从原点到达这个点。

Solution

不是很会,三进制拆分好像可做但是不想写,莽了个倍增上去结果过了?

关于正确性,考虑归纳,每次走相当于变成了一个子问题。

Code

E

Description

给出长度为 \(n\)\(01\)\(S\),构造一棵树。\(S_i\)\(1\) 表示存在一条边,使得割掉这条边后剩下两棵树中有一棵大小为 \(i\);第 \(i\) 位为 \(0\) 则表示不存在。

Solution

首先,容易发现若 \(S_1 = \texttt{0}\)\(S_n = \texttt{1}\)\(S_i \neq S_{n - i},i \in [1, n)\) 显然无解,下面说明其余情况都是有解的。

考虑构造一串菊花。具体地,若当前 \(1\) 的位置为 \(i\),下一个 \(1\) 的位置为 \(j\),则向后连一朵大小为 \(j - i\) 的菊花。容易发现这样构造符合条件。

Code

F

Description

给出每个点到其余所有点到距离和 \(d_i\)(两两不同),构造一棵符合条件的树,或判断无解。

Solution

以重心为根。则当前 \(d_i\) 最大的点一定是叶子,考虑向上走一步的贡献,则它的父亲 \(fa\) 一定满足 \(d_{fa} = d_i + 2 \times sz_i - n\),然后把这个孩子的大小病到父亲上就可以了 QAQ。

重复上述步骤 \(n - 1\) 次,就构造出了这棵树。特殊地,最后检查一下根到各点的距离和是否正确。

注意构造过程,容易发现无解当且仅当存在一个点找不到他的父亲(或者找到了它自己)。

Code

ARC 103

标签:注意   个数   line   最大   存在   找不到   test   block   solution   

原文地址:https://www.cnblogs.com/realSpongeBob/p/ARC103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!