本文主要是介绍UVA 10131 - Is Bigger Smarter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目大意: 给出一些大象,包含它的重量、智商。要你找出最长的序列,满足重量越大、智商越低。(严格增减)
题目类型:dp / LIS
题目分析:
把大象按重量升序排序,然后在此序列中对智商属性找最长单减子序列。要注意的是,题目要求的都是严格增减,所以要在判断条件里考虑相等的情况以排除(主要是重量)。
另外还要注意,排序后,序就不是原来的序了,而题目要求输出原序。所以在排序时维护一个r[]数组。
对于 最长单减子序列 的dp,状态转移方程(2种):
//d[i] = max{d[j]+1 | s[i]>s[j]; j = (i, n);} //d[i] 表示以 i 开头的 最长 递减子序列
//d[i] = max{d[j]+1 | s[i]<s[j]; j = [0, i);} //d[i] 表示以 i 结尾的 最长 递减子序列
代码:
这篇关于UVA 10131 - Is Bigger Smarter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!