C/C++教程

AtCoder Regular Contest 126题解(A-C)

本文主要是介绍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

这篇关于AtCoder Regular Contest 126题解(A-C)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!