AtCoder Regular Contest 126题解(A-C)

似乎是第一次认真打ARC,其实仍然在摆烂


A - Make 10

题意:给长度为2,3,4的木棒分别$a$,$b$,$c$根,求能拼成至多几根长度恰为10的木棒

题解:发现无论如何长为10的木棒都包含一个长度为6的,所以考虑先使用长度为3的

按以下顺序:①3+3+4 ②3+3+2+2 ③4+4+2 ④2+2+2+2+2是最优的,直接计算即可

时间:$O(1)$ 空间:$O(1)$


B - Cross-free Matching

题意:给2排每排$n$个点和$m$条线段,第$i$条线段连接第一排第$a_i$个点和第二排第$b_i$个点

求最多能选取几条线段,使得选取的线段两两不相交(端点重合也算相交)

题解:按照$b_i$从小到大为第一关键字,$a_i$从大到小为第二关键字对线段排序

遍历第二排每个点$x$,对于每一条线段$(a_i,x)$,树状数组维护第一排连接点不超过$a_i$的最大线段选取数

因为一个端点只能连接一条线段,所以$a_i$要从大到小排序

时间:$O(n\logn)$ 空间:$O(n)$


C - Maximize GCD

上一篇:实验1:SDN-拓扑实验


下一篇:AtCoder Beginner Contest 220部分题(G,H)题解