文章链接
数据库-SQL语句-排序相关
面5笔5鹅厂的下午茶时间很多人都去公司楼下的星巴克买咖啡,由于买咖啡的人很多,所以就排起了长长的队伍。
队伍当中有n个顾客,从1到n标号,一开始,每个顾客i在队伍当中的位置是i。每个顾客有两个属性ai和bi。
每个顾客的不满意度等于站在他前面的人与ai的乘积,加上站在他后面的人与bi的乘积。
正式来说,假设顾客位于位置j,那么它的不满意度等于ai*(j-1)+bi*(n-j)。|
作为咖啡店的经理,本着顾客至上的原则,你需要重新安排每个顾客的位置,使得所有的顾客的不满意度的总和最小( 数据:n<=1000)。
假设第i个顾客位于第j个位置,他的不满意度是:
ai*(j-1)+bi*(n-j)=(-ai+bi*n)+(ai-bi)*j
看后面化简后的式子,-ai+bi*n是固定不变的,不管顾客位于哪个位置。
后面哪一项是关键,(ai-bi)*j这一项说明为了使所有顾客的不满意度最小,ai-bi越大,j应该越小,ai-bi越小,j应该越大。
因此这个题的解法是:按ai-bi倒排,最大的排第一位,依次排下去。