双调TSP指的就是从最左边的城市出发,从左往右遍历一些城市,到达最右端,再从最右端从右往左返回出发城市,然后最优化某些东西。
poj 2677 就是要遍历所有的城市,最小化行走的距离(欧几里德距离)
usaco canada tour 就是每个城市最多遍历一次(出发点两次),最大化遍历的城市数量。
【解答】
显然从左往右,从右往左都是一样的,都可以变成从左往右。我们称前者为上行路线,后者为下行路线。
状态f[i][j]表示从出发点出发,上行路线最右端为i,下行路线最右端为j,同时我们规定,i在j的右边。
这样定义状态后,问题便迎刃而解。
例如poj 2677:
如果第i个城市归入上行路线,则 f[i][j]=min(f[i][j],f[i-1][j]+dis(a[i-1],a[i]));
否则归入下行路线:f[i][i-1]=min(f[i][i-1],f[i-1][j]+dis