标签:冰箱 容积 4901 FZOJ le 大象 排序 放入 贪心
题面
你有\(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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。