欢迎光临散文网 会员登陆 & 注册

AtCoder Beginner Contest 251(D ~ F)

2022-05-15 16:43 作者:Asunataisiki  | 我要投稿

D.At Most 3 (Contestant ver.)

题意:给一个值W,要求构造一个大小不超过300的数组,并且每个数不超过1e6,从数组中最多选择三个数求和后,保证1-W之间的所有数都至少出现过一次,输出数组大小以及数字

思路:考虑6位数如何去构造,一个六位数可以形如abcdef,那么最多选三个数,很容易想到将六个位置分成三份,即ab0000 + cd00 + ef,那么单独看ab, cd, ef,都可以用1~99来表示,这样总共就99*3个数字,不会超过300个

 


E.Takahashi and Animals

题意:有W个物品,每个物品有自己的价格,如果花费a_i的价格购买第i个物品,那么可以免费获得第i%2B1个物品,且如果购买第n个物品,那么可以免费获得第一个物品,问获得所有物品的最小花费

思路:考虑 dp%5Bi%5D%5B0%2F1%5D 表示前 i-1 个物品已经是最小花费,第 i 个物品是否购买的最小花费是多少,如果不购买第 i 个,那么第 i-1 个物品必须购买,那么转移方程为dp%5Bi%5D%5B0%5D%20%3D%20dp%5Bi%20-%201%5D%5B1%5D,如果购买第 i 个,那么第 i-1 个物品可以买也可以不买,取小的转移过来就行了,dp%5Bi%5D%5B1%5D%20%3D%20min(dp%5Bi%20-%201%5D%5B0%5D%2C%20dp%5Bi%20-%201%5D%5B1%5D)%20%2B%20a%5Bi%5D,对于最后一个物品,我们单独拿出来讨论,进行两次 dp,取最小值就可以了


F.Two Spanning Trees

题意:给出一张图G,现在要对这张图求两个生成树T_1%2CT_2 (可以相同),要求如下

T_1 :对于在G中的边%5C%7Bu%2Cv%5C%7D并且这条边不在T_1中,生成树中u%0A是的祖先节点v,或者v是的祖先节点u%0A

T_2 :T_2中没有不包含 G 的边%5C%7Bu%2Cv%5C%7D,使得 u%0Av 中的一个是 T_2 中另一个的祖先(没有在生成树中的边%5C%7Bu%2Cv%5C%7D,在生成树中 u%0Av)也不是vu%0A) 的祖先)

思路:对于T_1,就是求一个dfs树,因为非dfs%0A树边都是返祖边,正好符合题意;T_2就是求bfs树,如果根节点是1,同层节点如果连边,而不连1到这个节点,那么这个节点与1还是存在祖孙关系;如果不是同层节点,如果两个点没有连边,那么这两个点也就没有祖孙关系。



AtCoder Beginner Contest 251(D ~ F)的评论 (共 条)

分享到微博请遵守国家法律