关于#算法#的问题:一共有n个物体和m个容器,每个物体有两个维度性质ai和di,容器有性质Ai和Di,我们定义一个物体i可以被装进容器j当且仅当ai<=Aj并且di<=Dj,求能装的最大数量

该问题是这样的,一共有n个物体和m个容器,每个物体有两个维度性质ai和di,容器有性质Ai和Di,我们定义一个物体i可以被装进容器j当且仅当ai<=Aj并且di<=Dj,求能装的最大数量。

我现在的做法是将其理解为二分图的最大匹配问题,并用HK算法求解,但其时间复杂度为O(msqrt(n),(满足题意的算法复杂度应为O(mlogn)或O(nlogm)等,类似即可,n和m为一个数量级)。我想请求一个满足时间复杂度的算法或者或是做法,感谢!

直觉上应该是排序后贪心,因为排序算法的时间复杂度一般就是nlogn。不过这里关于两个维度的理解不好把握,如果是长和宽,相当于可以互换,所以只要保证ai比di小,大的话交换位置,再排序即可,容器也一样操作。如果不可以互换,则还要需要区分ai比di小,和ai比di大的情况分开讨论。