POJ 2686 Traveling by Stagecoach
状压DP
dp[s][p]用了哪几张票,到哪个节点的最小费用。
注意:G++ %.3lf输出会WA,但C++能过;改成%.3f,C++,G++都能AC
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<algorithm>
using namespace std; const double INF = ;
int n, m, p, a, b;
int t[];
struct Edge
{
int to;
int dis;
}e[];
int tot;
vector<int>g[];
double dp[][]; int main()
{
while (~scanf("%d%d%d%d%d", &n, &m, &p, &a, &b))
{
if (n == && m == && p == && a == && b == ) break; tot = ;
for (int i = ; i <= m; i++) g[i].clear();
for (int i = ; i < ( << n); i++)
for (int j = ; j <= m; j++) dp[i][j] = INF; for (int i = ; i < n; i++) scanf("%d", &t[i]);
for (int i = ; i <= p; i++)
{
int u, v, c; scanf("%d%d%d", &u, &v, &c);
e[++tot].to = v; e[tot].dis = c; g[u].push_back(tot);
e[++tot].to = u; e[tot].dis = c; g[v].push_back(tot);
} dp[][a] = ;
for (int i = ; i < ( << n); i++)
{
for (int j = ; j <= m; j++)
{
if (dp[i][j] == INF) continue;
for (int k = ; k < n; k++)
{
if ((i | ( << k)) == i) continue;
for (int s = ; s < g[j].size(); s++)
{
dp[(i | ( << k))][e[g[j][s]].to] = min(
dp[(i | ( << k))][e[g[j][s]].to],
dp[i][j] + 1.0*e[g[j][s]].dis / (1.0*t[k]));
}
}
}
} double ans = INF;
for (int i = ; i < ( << n); i++)
ans = min(ans, dp[i][b]);
if (ans == INF) printf("Impossible\n");
else printf("%.3f\n", ans);
}
return ;
}
POJ 2686 Traveling by Stagecoach的更多相关文章
- POJ 2686 Traveling by Stagecoach(状压二维SPFA)
Traveling by Stagecoach Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3407 Accepted ...
- poj 2686 Traveling by Stagecoach ---状态压缩DP
题意:给出一个简单带权无向图和起止点,以及若干张马车车票,每张车票可以雇到相应数量的马. 点 u, v 间有边时,从 u 到 v 或从 v 到 u 必须用且仅用一张车票,花费的时间为 w(u, v) ...
- POJ 2686 Traveling by Stagecoach(状压DP)
[题目链接] http://poj.org/problem?id=2686 [题目大意] 给出一张无向图,你有n张马车票每张车票可以租用ti匹马, 用一张马车票从一个城市到另一个城市所用的时间为这两个 ...
- POJ 2686 Traveling by Stagecoach 壮压DP
大意是有一个人从某个城市要到另一个城市(点数<=30) 然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票. 花费的时间呢,是马车票上有个速率值,用边/速率就是花的时间. 问最后这个人花费 ...
- POJ 2686 Traveling by Stagecoach (状压DP)
题意:有一个人从某个城市要到另一个城市, 有n个马车票,相邻的两个城市走的话要消耗掉一个马车票.花费的时间呢,是马车票上有个速率值 ,问最后这个人花费的最短时间是多少. 析:和TSP问题差不多,dp[ ...
- poj2686 Traveling by Stagecoach
http://poj.org/problem?id=2686 Trav ...
- Traveling by Stagecoach(POJ 2686)
原题如下: Traveling by Stagecoach Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4494 Ac ...
- Traveling by Stagecoach 状态压缩裸题
Traveling by Stagecoach dp[s][v] 从源点到达 v,状态为s,v的最小值. for循环枚举就行了. #include <iostream> #inclu ...
- POJ2686 Traveling by Stagecoach(状压DP+SPFA)
题目大概是给一张有向图,有n张票,每张票只能使用一次,使用一张票就能用pi匹马拉着走过图上的一条边,走过去花的时间是边权/pi,问从a点走到b点的最少时间是多少. 用dp[u][S]表示当前在u点且用 ...
随机推荐
- ip地址的网络配置
记录一下linux下的网络配置 3.执行命令(通过ifconfig查一下网卡): vi /etc/sysconfig/network-scripts/ifcfg-eth2 注:按字母a,代表插入. 编 ...
- auto ash v1
startdate=$1enddate=$2#reporttype=$3#reportformat='text'oraclehome=`echo $ORACLE_HOME` dbid=`sqlplus ...
- ignite客户端找不到服务端的时候如何设置退出
ignite启动客户端时需要有服务端支持: Ignition.setClientMode(true); Ignition.start("ignite.xml"); 这里有个问题,当 ...
- OpenGL ES着色器语言之操作数(官方文档第五章)
OpenGL ES着色器语言之操作数(官方文档第五章) 5.1操作数 OpenGL ES着色器语言包含如下操作符. 5.2数组下标 数组元素通过数组下标操作符([ ])进行访问.这是操作数组的唯一操作 ...
- spring jdbc 源码
类:org.springframework.jdbc.core.JdbcTemplate public <T> T execute(PreparedStatementCreator psc ...
- 【转载】GDI 映像方式 之 SetViewportOrgEx 与 SetWindowOrgEx 解析
SetViewportOrgEx 与 SetWindowOrgEx 解析 这两个函数,用来改变视端口和窗口的原点,并都具有改变轴的效果,以致(0,0)不再指左上角. 「视端口」是依据设备坐标(图素)的 ...
- ubuntu apache2 流量限制模块
mod-bw is an Apache 2 module provided to solve the problem of limiting users’ and virtual hosts’ ban ...
- HDU 5240 Exam
The 2015 ACM-ICPC China Shanghai Metropolitan Programming Contest 2015ACM-ICPC上海大都会赛 签到题 #include< ...
- mysql date range
http://stackoverflow.com/questions/9935690/mysql-datetime-range-query-issue " ";
- Java socket通信
首先抛开语言层面,简单介绍一下socket通信过程: 1.服务器端开启监听端口,阻塞进程 等待客户端连接 2.客户端连接,这时就产生了一个socket socket就相当于一个传递消息的通道,一般都 ...