哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2010/05/14/5592909.aspx
http://acm.pku.edu.cn/JudgeOnline/problem?id=1040
类型:DFS
题意: 从城市A到城市B要经过一些站,每站都有一些票,汽车有容量,每站上车的不能超过汽车的容量,汽车要选择一些能构成最大利润的票,票上的起始站到目的站是直达的
思路: 采用DFS+分支限界法,首先对各个票的利润进行排序,计算出若取这个票会获得总共的最大利润,order[0]的最大收益是order[0].v+order[1].v+......order[p-1].v,order[2].r = order[2].v+order[3].v+......order[p-1].v
因为在order[0]的时候order[0]和order[2]已经被算过了.如果票满足条件,把它的人数加到各个站上,票的终止站不用加,这样就不用考虑下车问题.如果哪站人超了,要进行回溯.如果当前得到的利润加上该票的期望比以前得到的值小,直接返回到上一层.
代码 (47MS, 700K)