摘要: 把1~N的路径处理出来,算出需要的时间,如果时间不够就直接挂了,时间多的话就可以去用这些时间去拿别的物品了。 对1~N这条路径上的所有点做一遍树形背包,注意背包时不要背到这条路径上的点,否则就重复计算了。最后再将路径上的点用背包合并即可。代码:#include <iostream>#include <stdio.h>#include <string.h>#include <memory.h>#i... 阅读全文
posted @ 2012-09-10 23:28 编程菜菜 阅读(303) 评论(0) 推荐(0) 编辑
摘要: /*摘自网络因为必须经过H个点,H<=15,安排一个顺序使得能遍历完H个城市,可以用状态DP做。用Floyd求任意两点之间的最短距离,也就是最小路费。状态DP求经过某些城市集合s,最后到达某个城市i获得的最大收益,用f[s][i]表示。最后要回到起始点1,这样判断是否能从f[all][i]状态是否能回到1点即可,all是所有的必经点。PS:比赛的时候不是这么想,比赛时是把回到起始点1虚拟成n+1点... 阅读全文
posted @ 2012-09-10 23:25 编程菜菜 阅读(414) 评论(0) 推荐(0) 编辑