CF158 Div.2 全场题解
A - Adding Digits
题面:
给你一个数,你可以在后面增加 $n$ 个数,并且在增加数之后必须保证当前数能被 $b$ 整除,请输出操作后的数。如果不能构造出来,就输出 -1.
题解:
暴力去模拟即可,到一位然后枚举填的数字,能整除那么就填上,整除不了就输出 -1.
B - Ancient Prophesy
题面:
给你一个字符串,你需要解码一个日期,日期格式是 $dd-mm-yyyy$,从左到右分别为日,月,年。定义解码后的日期为出现次数最多的日期。有个要求是年份必须是在 2013 和 2015 之间,且日和月必须复合生活常识逻辑。
题解:
扫一遍字符串,然后对接下来的字符判断,模拟题,也没大有代码量。注意判断的时候 2 月要特判,且格式和年份必须符合。对符合要求的日期进行压缩,压缩到一个 map 里,最后解压输出次数最多的即可。
C - Balls and Boxes
题面
对于一个序列 $b$,可以选择一个点将其值平铺。现在给出一个序列 $a$,表示平铺操作后的结果,并已知平铺操作的最后一个点的下标为 $x$,现在让你构造出平铺前的序列 $b$ 。
平铺:选择序列 $b$ 中的 $b_i$,将其设为 $0$,然后将值从 $i+1$ 开始一次分配一个(多余就环形继续分配)
题解
显然最小的数就可能会是平铺的起点,直接整体减去最小值,从 $x$ 往回即 $-1$ 方向寻找最近的 $0$ 即可。
D - Black and White Tree
题面:
这块板子上画着一棵树形图,由 $n$ 个节点组成。让我们提醒一下您,一个无向图如果它是连通的且不含任何环,那么它就被称为树。
图中的每个节点都被涂成了黑色或白色,且任意两个通过边相连的节点颜色都不相同。每条边都标有一个非负整数作为其值。
一个调皮的男孩瓦西卡走到黑板前,在每个节点 $v$ 旁写下了 $s_v$ 这个数——即与该节点相连的所有边的权值之和。然后瓦西卡把边及其权值从黑板上擦掉了。
你的任务是根据节点颜色和编号 $s_v$ 恢复原始树。
题解:
纯纯构造题,构造一棵树,但是我们可以发现,有一种树白色点的权值和和黑色点的权值和相等,那我们是不是可以考虑贪心策略,我们建一条边,然后权值就是Su和Sv的较小值,我们将较大的更新为大减小,删除v换一个,一直一直这样造,直到不能造,恭喜你,成功的构造出了一个合格的树,正确性易证。