<题目链接> 题目大意: 给出n个点和m条边,求经过所有点所需的最小花费,每个点最多经过两次。 解题分析: TSP问题类型,由于此题每个点有三种状态,所以采用三进制状态压缩,0、1、2 分别代表经过这个点的次数,然后就与TSP的dp解法类似,dp[i][j]代表状态为i,以 j 城市作为旅途的最后一 ...
分类:
其他好文 时间:
2018-09-07 11:08:15
阅读次数:
152
题目链接 30分: 爆搜。 50分: 可以发现,每行和每列最多都只能放两个象棋,考虑三进制状压dp,表示出每列放了多少个象棋(只能是0个,1个或2个),从上往下一行一行地处理即可。如果列数过于大的话,交换行数和列数再处理就行了,因为在50%的数据中,行数和列数中至少是有一个不超过8的。 100分: ...
分类:
其他好文 时间:
2018-07-31 01:34:26
阅读次数:
152
"题目链接" 题意 给定一个$N$个点的无向图,求从任意一个点出发,经过所有点的最短路径长度(每个点 至多可以经过两次 )。 思路 状态表示、转移及大体思路 与 "poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp" 相同。 但,因为是每个点 ...
分类:
其他好文 时间:
2018-02-15 16:54:43
阅读次数:
175
三进制状压DP,预处理就可以了,不过数据好大好难调。。没注意重边WA了一版。。不会生出图的数据,就干脆建了个完全图 1 //#include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define inc(i,l,r) for...
分类:
其他好文 时间:
2015-12-21 19:56:22
阅读次数:
165
// hdu 3001 TSP问题的变形
// 这次到每个点最多两次,所以可以用三进制的类推
// dp[S][u]表示当前在u点访问状态为S时所得到的最小的开销
// 采用刷表法,即用当前的状态推出它所能转移的状态
// dp[S][u] 可以到达的状态为dp[S+state[v]][v](dist[u][v]!=inf)
// dp[S+state[v]][v] = max(dp[S+stat...
分类:
其他好文 时间:
2015-04-15 01:03:10
阅读次数:
148