AtCoder Beginner Contest 251(D ~ F)
2022-05-15 16:43 作者:Asunataisiki | 我要投稿
D.At Most 3 (Contestant ver.)
题意:给一个值,要求构造一个大小不超过300的数组,并且每个数不超过1e6,从数组中最多选择三个数求和后,保证1-
之间的所有数都至少出现过一次,输出数组大小以及数字
思路:考虑6位数如何去构造,一个六位数可以形如abcdef,那么最多选三个数,很容易想到将六个位置分成三份,即ab0000 + cd00 + ef,那么单独看ab, cd, ef,都可以用1~99来表示,这样总共就99*3个数字,不会超过300个

E.Takahashi and Animals
题意:有个物品,每个物品有自己的价格,如果花费
的价格购买第
个物品,那么可以免费获得第
个物品,且如果购买第
个物品,那么可以免费获得第一个物品,问获得所有物品的最小花费
思路:考虑 表示前
个物品已经是最小花费,第
个物品是否购买的最小花费是多少,如果不购买第
个,那么第
个物品必须购买,那么转移方程为
,如果购买第
个,那么第
个物品可以买也可以不买,取小的转移过来就行了,
,对于最后一个物品,我们单独拿出来讨论,进行两次
,取最小值就可以了

F.Two Spanning Trees
题意:给出一张图,现在要对这张图求两个生成树
(可以相同),要求如下
:对于在
中的边
并且这条边不在
中,生成树中
是的祖先节点
,或者
是的祖先节点
:
中没有不包含
的边
,使得
和
中的一个是
中另一个的祖先(没有在生成树中的边
,在生成树中
(
)也不是
(
) 的祖先)
思路:对于,就是求一个
树,因为非
树边都是返祖边,正好符合题意;
就是求
树,如果根节点是1,同层节点如果连边,而不连1到这个节点,那么这个节点与1还是存在祖孙关系;如果不是同层节点,如果两个点没有连边,那么这两个点也就没有祖孙关系。