其他分享
首页 > 其他分享> > FZOJ#4901 大象(贪心)

FZOJ#4901 大象(贪心)

作者:互联网

题面

你有\(n\)只大象,第\(i\)只大象的体积是\(S_i\),神仙程度为\(V_i\)。

另外有\(m\)个冰箱,第\(i\)个冰箱的容积是\(C_i\)。

只有大小不超过\(C_i\)的大象才能放入第\(i\)个冰箱中,每个冰箱最多只能放一只大象。

你需要将这些放了大象的冰箱排成一排,使得

求最多能将多少只大象放入冰箱。

对于 50% 的数据,\(n,m\le 10^3\)
对于 100% 的数据,\(n,m\le 10^5,S_i,v_i,C_i\le10^9\)

题解

50pts

将大象按照\(v\)从小到大排序,冰箱按容积从小到大排序。那么我们顺序选择大象和冰箱,就可以去掉那两个限制条件。

考虑dp,设\(f[i,j]\)表示 使用前\(i\)只大象 和 前\(j\)个冰箱,最多能放入的大象数量。

接下来分情况讨论,若要将第\(i\)只大象放入第\(j\)个冰箱,则\(f[i,j]=f[i-1,j-1]+1\)

若第\(i\)只大象不放入第\(j\)个冰箱,则\(f[i,j]=max\{f[i-1,j],f[i,j-1]\}\)

解释一下第二种情况,可能是第\(i\)只大象已经放入了前\(j-1\)个冰箱,也可以由前\(i-1\)只大象已经放入了前\(j\)个冰箱转移来。(当时就是只写了\(f[i-1,j]\),悲桑.jpg)

时间复杂度\(O(n^2)\),可以拿到50pts。(也有可能是我不会优化)


100pts

还是按照上面的方式排序,然后我们翻出题解并考虑一个贪心的做法

标签:冰箱,容积,4901,FZOJ,le,大象,排序,放入,贪心
来源: https://www.cnblogs.com/hzy1/p/15314522.html