旅行

旅行商问题简化版模型

天涯浪子 提交于 2019-12-02 15:46:47
学到了,我得到了一个线性动态规划的模型。 以防万一,我还是先把旅行商问题简化版的题意简要说明一下。 原本的旅行商问题是在一圈城市之间找到最短回路访问各城市有且仅有一次。现在添加了限制:对于每个城市,所有标号比该城市小的城市要么全部访问过要不全部没有访问。这样我们对于整体的访问队列能够得到一个抽象的双向队列。 首先添加1,1是固定的。 1 然后添加2,2的位置可以在1前面也可以在1后面。 1 2 2 1 这两种情况都是合法的,然后我们添加3,3的位置也可以在队列的前面或者后面但是不能在队列中间。 3 1 2 1 2 3 3 2 1 2 1 3 在n等于3的情况下有且只有这4种合法情况。对于接下来的压入行为,对状态有影响的只有队列两端的元素。所以我们定义状态为( i , j ),表示队列两段分别为i和j且i是当前队列中最大的元素时最小的花费,始终保持i大于j。(第二种情况和第三种情况是等效的)于是我们得到状态转移方程。 dp[i+1][j]=min(dp[i+1][j],dp[i][j]+dis[i+1][i]); dp[i+1][i]=min(dp[i+1][i],dp[i][j]+dis[i+1][j]); 规模为n的问题实际上只用n-1个有效可行解。 然后对于最后求解,我们在 dp[n][i](i<n) 中求最小值即可。 来源: https://www.cnblogs.com

旅行 Noip 2018 Day2T1

梦想与她 提交于 2019-11-30 04:30:13
突然发现好久没写博客了,那就讲一讲Noip的题吧 -----------------------------------我是分割线--------------------------------------- 直接上题: 题目描述 小 Y 是一个爱好旅行的 OIer。她来到 X 国,打算将各个城市都玩一遍。 小Y了解到, X国的 n 个城市之间有 m 条双向道路。每条双向道路连接两个城市。 不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。小 Y 只能通过这些 道路从一个城市前往另一个城市。 小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可 以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该 城市时经过的道路后退到上一个城市。当小 Y 回到起点时,她可以选择结束这次旅行或 继续旅行。需要注意的是,小 Y 要求在旅行方案中,每个城市都被访问到。 为了让自己的旅行更有意义,小 Y 决定在每到达一个新的城市(包括起点)时,将 它的编号记录下来。她知道这样会形成一个长度为 n n 的序列。她希望这个序列的字典序 最小,你能帮帮她吗? 对于两个长度均为 n n 的序列 A A 和 B B,当且仅当存在一个正整数 x x,满足以下条件时, 我们说序列