题目链接:http://poj.org/problem?id=3311 题目: 题意:n个城市,每两个城市间都存在距离,问你恰好经过所有城市一遍,最后回到起点(0)的最短距离. 思路:我们首先用floyd预处理出每两个城市间的最短路,然后采用状压dp来解题.dp[i][j]表示在i这种状压下以j为目标城市的最短距离,i的二进制中x位为1表示到了城市x,为0表示没到城市x,则转移方程为dp[i][j] = min(dp[i][j], dp[i^(1<<(j-1))][k] + dis[k][j]…
Hie with the Pie Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11243   Accepted: 5963 Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfortunately, due to cutbacks, they can aff…
题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻到$t_i$完成任务.同一时刻可以接受多个任务.问:最多能完成多少任务. 输入 第一行,三个正整数$n$.$m$.$q$: 接下来$m$行,每行三个正整数$u_i$.$v_i$.$c_i$,表示有一条从$u_i$到$v_i$,耗时$c_i$的边. 接下来$q$行,每行四个正整数$s_i$.$t_i$…
题意:给n个点,m条边,每次只能沿边走,花费为边权值,求从1出发经过所有其它点≥1次最后回到1的最小花费. 思路: 状压DP.先用Floyd得到任意两点间的最短距离,转移时沿两个点的最短路转移.此时的状态表示为dp[i][j]:“落脚点集合为i,最后停在j”的方案数:而不是“访问过的点的集合为i,最后停在j”的方案数. SPFA.每个状态保存访问过的点的集合,以及最后停留的位置,然后SPFA即可. floyd + 状压DP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15…
题目链接 题意 给定一个\(N\)个点的完全图(有向图),求从原点出发,经过所有点再回到原点的最短路径长度(可重复经过中途点). 思路 因为可多次经过同一个点,所以可用floyd先预处理出每两个点之间的最短路径. 接下来就是状压dp的部分. 将已经经过的点的状态用\(state\)表示, 则\(dp[state][k]\)表示当前到达点\(k\)后状态为\(state\)时的最短路径长度. \[ans=min_{i=1}^{n}(dp[(1<<n)-1][i]+dis[i][0])\] 可用记…
链接:http://poj.org/problem?id=3311 题意:有N个地点和一个出发点(N<=10),给出全部地点两两之间的距离,问从出发点出发,走遍全部地点再回到出发点的最短距离是多少. 思路:首先用floyd找到全部点之间的最短路.然后用状态压缩,dp数组一定是二维的,假设是一维的话不能保证dp[i]->dp[j]一定是最短的.由于dp[i]记录的"当前位置"不一定是能使dp[j]最小的当前位置.所以dp[i][j]中,i表示的二进制下的当前已经经过的状态,j…
题目链接:点击打开链接 题目大意:有n个城市.在n个城市之间有m条双向路.每条路有一个距离.如今问从1号城市去游览其他的2到n号城市最后回到1号城市的最短路径(保证1能够直接或间接到达2到n).(n<=16) 首先用floyd跑出随意一点到其它点最短路. 从n小于等于16就能够看出用状压,从1点開始,dp[i][j]当前经过了i中为1的城市.最后经过的城市是j,不断维护.最后得到dp[1<<n-1][j]+dis[j][1]的距离最短的值. #include <iostream&g…
2800 送外卖  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond     题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上.n个不同的客户分别在1~n个编号的城市中.送外卖的从0号城市出发,然后n个城市都要走一次(一个城市可以走多次),最后还要回到0点(他的单位),请问最短时间是多少.现在已知任意两个城市的直接通路的时间. 输入描述 Input Description 第一行一个正整数n…
Travel PP loves travel. Her dream is to travel around country A which consists of N cities and M roads connecting them. PP has measured the money each road costs. But she still has one more problem: she doesn't have enough money. So she must work dur…
题目连接:http://poj.org/problem?id=3311 题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小. 分析:跑一遍Floyd求出两两之间的最短距离,然后就是一个裸TSP问题了. dp[state][i]表示在state状态下(state的二进制1表示经过的点)当前处于i点的的最少时间. #include <cstdio> #include <cstring> #include <string>…