Traveling by Stagecoach

dp[s][v]  从源点到达  v,状态为s,v的最小值。  for循环枚举就行了。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long LL;
const double INF=0x4fffffff;
const double EXP=1e-;
const int MS=;
const int SIZE=; double dp[<<MS][SIZE]; int edges[SIZE][SIZE];
int cnt[MS]; int start,final,tickets,citys,edge; void solve()
{
for(int i=;i<(<<tickets);i++)
fill(dp[i],dp[i]+SIZE,INF);
dp[(<<tickets)-][start-]=;
double res=INF;
for(int i=(<<tickets)-;i>=;i--)
{
res=min(res,dp[i][final-]);
for(int u=;u<citys;u++)
{
for(int j=;j<tickets;j++)
{
if((i>>j)&)
{
for(int v=;v<citys;v++)
if(edges[u][v]>=)
dp[i-(<<j)][v]=min(dp[i-(<<j)][v],dp[i][u]+double(edges[u][v])/cnt[j]);
}
}
}
}
if(res+EXP>=INF)
printf("Impossible\n");
else
printf("%.3lf\n",res);
} int main()
{
while(scanf("%d%d%d%d%d",&tickets,&citys,&edge,&start,&final)==&&tickets)
{ for(int i=;i<tickets;i++)
{
scanf("%d",&cnt[i]);
}
memset(edges,-,sizeof(edges));
for(int i=;i<edge;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
edges[x-][y-]=edges[y-][x-]=z;
}
solve();
}
return ;
}

Traveling by Stagecoach 状态压缩裸题的更多相关文章

  1. POJ2686 Traveling by Stagecoach 状态压缩DP

    POJ2686 比较简单的 状态压缩DP 注意DP方程转移时,新的状态必然数值上小于当前状态,故最外层循环为状态从大到小即可. #include <cstdio> #include < ...

  2. poj 2686 Traveling by Stagecoach ---状态压缩DP

    题意:给出一个简单带权无向图和起止点,以及若干张马车车票,每张车票可以雇到相应数量的马. 点 u, v 间有边时,从 u 到 v 或从 v 到 u 必须用且仅用一张车票,花费的时间为 w(u, v) ...

  3. hdu 2167(状态压缩基础题)

    题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取! 分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是 ...

  4. hdu 1565(状态压缩基础题)

    题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #inclu ...

  5. poj 3254(状态压缩基础题)

    题意:就是你给一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以种植作物,0则不可以种植作物,并且相邻的土地不能同时种植作物,问你有多少种种植方案. 分析:这是我做的第一道状态压缩dp ...

  6. poj1185 状态压缩经典题

    状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态 ...

  7. hdu4064 三进制状态压缩 好题!

    还不太会做这类题,总之感觉有点难啊. 用深搜代替打表求出一行所有的可行状态,注意要进行剪枝 这是自己理解的代码,但是tle了 #include<bits/stdc++.h> using n ...

  8. POJ 3254 Corn Fields(状态压缩)

    一道状态压缩的题,错了好多次....应该先把满足的情况预处理出来 #include<iostream> #include<cstdio> #include<cstring ...

  9. 状压dp(状态压缩&&dp结合)学习笔记(持续更新)

    嗯,作为一只蒟蒻,今天再次学习了状压dp(学习借鉴的博客) 但是,依旧懵逼·································· 这篇学习笔记是我个人对于状压dp的理解,如果有什么不对的 ...

随机推荐

  1. 【转】使用json-lib进行Java和JSON之间的转换

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java ...

  2. Tagged Pointers

    [Tagged Pointers] 1.what is tagged pointer? 2.原理剖析

  3. JavaScript一些不常用的写法

    如何写JavaScript才能逼格更高呢?怎样才能组织JavaScript才能让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句“原来还可以这样写”呢?下面列出一些在JavaScrip ...

  4. 如何在tomcat安装部署php项目

    java开发者都知道,tomcat是用来部署java web项目的.前几天老k偶然得知PHP/Java Bridge,通过它可以实现在jsp和php之间共享session,详见<如何实现jsp和 ...

  5. android AChartEngine图标引擎

    AChartEngine 1.在androi开发中的时候很多时候是要用图表将数据直观的显示出来的,这里就要用到AChartEngine. XMultipleSeriesRenderer 是经常要用到的 ...

  6. C:指针

    指针 指针数组   参考1   参考2  参考3  参考4 1.指针 也是一种变量.指针内部存的是一块内存的地址. //指针: 通常我们说的指针其实是指针变量,相比于其他基本数据类型的变量不同,它存储 ...

  7. 6.开放-关闭原则(Open-Close Principle)

    1.定义 一个软件实体(如类.模块.函数)应当对扩展开放,对修改关闭. 2.定义解读 在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的.那么如何应对需求变化的情况?这就是开放 ...

  8. OpenStack Hacker养成指南

    0 阅读指南 希望本文能够解开你心中萦绕已久的心结,假如是死结,请移步到 https://wiki.openstack.org/wiki/Main_Page 学习OpenStack其实就是学习各种Py ...

  9. EXchange2010配置

    DAG配置: 组织配置:如果见证服务器是DC不是exchange服务器,那么需要在AD用户和计算机里面,将exchange trusted subsystem 添加到 DC的本地管理员组(/built ...

  10. 【M35】让自己习惯于标准C++语言

    1.最近一些年C++语言增加的特性有: a.RTTI,namespace,bool,关键字mutable和explicit,enums,以及const static int可以直接初始化. b.扩充了 ...