周游加拿大 Canada Tour.docVIP

  • 7
  • 0
  • 约2.34千字
  • 约 6页
  • 2017-11-26 发布于河南
  • 举报
周游加拿大 Canada Tour

周游加拿大 Canada Tour 从东至西有m个城市,其中某些城市之间有航班,让你从最东边的城市出发,坐航班每次只能向西走,走到最西边之后再往回走到最东边的城市(除了两端的城市,其他城市只能经过一次),使得经过的城市数量尽可能多。 (东至西至东==两个人同时向西走且经过的城市不相同) 设f[i,j]表示从起点出发,一个人到达i,另一个人到达j时经过的城市数。 状态设定 f[i,j] 为假定的甲乙两人,甲走到第i个城市,乙走到第j个城市时,两人走过的城市数目的和。 初始状态 f[1,1]=1 状态转移方程 f[i,j]=max{f[i,k]+1}(k到j存在飞机航线,1=kJ) 交换甲乙,则肯定有f[j,i]=f[i,j]。 因为f[i,j]=f[j,i],所以我们限制ij。 分析状态(i,j),它可能是(k,j)(jki)中k到达i得到(方式1),也可能是(j,k)(kj)中k超过j到达i得到(方式2)。 但它不能是(i,k)(kj)中k到达j得到,因为这样可能会出现重复路径。即使不会出现重复路径,那么它由(j,k)通过方式2同样可以得到,所以不会遗漏解。 目标结果 由于题中告知必须走到终点才能返回,输出结果一定是max{f[i,N]}(i到N存在飞机航线)。时间复杂度O(n3) 如果没有经过城市数目大于1的可行目标状态,则无法完成这次环游,输出1。 这是加拿大IOI93的一道原

文档评论(0)

1亿VIP精品文档

相关文档