状压DP

dp[s][p]用了哪几张票,到哪个节点的最小费用。

注意:G++ %.3lf输出会WA,但C++能过;改成%.3f,C++,G++都能AC

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<queue>
  5. #include<vector>
  6. #include<map>
  7. #include<algorithm>
  8. using namespace std;
  9.  
  10. const double INF = ;
  11. int n, m, p, a, b;
  12. int t[];
  13. struct Edge
  14. {
  15. int to;
  16. int dis;
  17. }e[];
  18. int tot;
  19. vector<int>g[];
  20. double dp[][];
  21.  
  22. int main()
  23. {
  24. while (~scanf("%d%d%d%d%d", &n, &m, &p, &a, &b))
  25. {
  26. if (n == && m == && p == && a == && b == ) break;
  27.  
  28. tot = ;
  29. for (int i = ; i <= m; i++) g[i].clear();
  30. for (int i = ; i < ( << n); i++)
  31. for (int j = ; j <= m; j++) dp[i][j] = INF;
  32.  
  33. for (int i = ; i < n; i++) scanf("%d", &t[i]);
  34. for (int i = ; i <= p; i++)
  35. {
  36. int u, v, c; scanf("%d%d%d", &u, &v, &c);
  37. e[++tot].to = v; e[tot].dis = c; g[u].push_back(tot);
  38. e[++tot].to = u; e[tot].dis = c; g[v].push_back(tot);
  39. }
  40.  
  41. dp[][a] = ;
  42. for (int i = ; i < ( << n); i++)
  43. {
  44. for (int j = ; j <= m; j++)
  45. {
  46. if (dp[i][j] == INF) continue;
  47. for (int k = ; k < n; k++)
  48. {
  49. if ((i | ( << k)) == i) continue;
  50. for (int s = ; s < g[j].size(); s++)
  51. {
  52. dp[(i | ( << k))][e[g[j][s]].to] = min(
  53. dp[(i | ( << k))][e[g[j][s]].to],
  54. dp[i][j] + 1.0*e[g[j][s]].dis / (1.0*t[k]));
  55. }
  56. }
  57. }
  58. }
  59.  
  60. double ans = INF;
  61. for (int i = ; i < ( << n); i++)
  62. ans = min(ans, dp[i][b]);
  63. if (ans == INF) printf("Impossible\n");
  64. else printf("%.3f\n", ans);
  65. }
  66. return ;
  67. }

POJ 2686 Traveling by Stagecoach的更多相关文章

  1. POJ 2686 Traveling by Stagecoach(状压二维SPFA)

    Traveling by Stagecoach Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3407   Accepted ...

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

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

  3. POJ 2686 Traveling by Stagecoach(状压DP)

    [题目链接] http://poj.org/problem?id=2686 [题目大意] 给出一张无向图,你有n张马车票每张车票可以租用ti匹马, 用一张马车票从一个城市到另一个城市所用的时间为这两个 ...

  4. POJ 2686 Traveling by Stagecoach 壮压DP

    大意是有一个人从某个城市要到另一个城市(点数<=30) 然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票. 花费的时间呢,是马车票上有个速率值,用边/速率就是花的时间. 问最后这个人花费 ...

  5. POJ 2686 Traveling by Stagecoach (状压DP)

    题意:有一个人从某个城市要到另一个城市, 有n个马车票,相邻的两个城市走的话要消耗掉一个马车票.花费的时间呢,是马车票上有个速率值 ,问最后这个人花费的最短时间是多少. 析:和TSP问题差不多,dp[ ...

  6. poj2686 Traveling by Stagecoach

                    http://poj.org/problem?id=2686                                                  Trav ...

  7. Traveling by Stagecoach(POJ 2686)

    原题如下: Traveling by Stagecoach Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4494   Ac ...

  8. Traveling by Stagecoach 状态压缩裸题

    Traveling by Stagecoach dp[s][v]  从源点到达  v,状态为s,v的最小值.  for循环枚举就行了. #include <iostream> #inclu ...

  9. POJ2686 Traveling by Stagecoach(状压DP+SPFA)

    题目大概是给一张有向图,有n张票,每张票只能使用一次,使用一张票就能用pi匹马拉着走过图上的一条边,走过去花的时间是边权/pi,问从a点走到b点的最少时间是多少. 用dp[u][S]表示当前在u点且用 ...

随机推荐

  1. 登录验证的js;JS验证邮箱 验证密码

    var auth_email = 0, auth_pwd = 0, auth_captcha = 0, url_ajax = "/protected/user_ajax.php"; ...

  2. 转 Problem: AnyConnect was not able to establish a connection to the specified secu

    不多说直接上问题,在点击连接时,也是能正常连接上输入密码,在输出用户名密码后 连接后,会出现: problem:anyconnect was net able to establish a conne ...

  3. cocos2d-js 显示帧序列图中的一帧

    1.flashCC中打开库,在一个元件中右键->Generate Sprite Sheet...设置如下: 2.点Export后得到playerWalk.png和playerWalk.plist ...

  4. Json解析要点

    解析Json时,昨天遇到了新的问题,之前都是解析的数组,不是数组的用类来做. 这是Json串; {"status":"00001","ver" ...

  5. GIT问题,error:src refspec master does not match any

    将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时可能会出现如下错误error:src refspec master does not match any原因: 本地版本库为空, 空目录不 ...

  6. Java实现随意切换VPN改变上网地区

    http://www.jb51.net/article/69267.htm 这篇文章主要介绍了Java实现随意切换VPN改变上网地区,本文直接给出实例代码,需要的朋友可以参考下 在很多情况下,有些网络 ...

  7. hdu_4897_Little Devil I(树链剖分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4897 题意:有三种操作,1是在树上的两个节点之间的路径改变当前的颜色,2是改变树上有且只有一个端点在u ...

  8. Centos修改默认网卡名

    安装系统后默认的网卡名称为 enpXX ,修改为熟悉的eth0 1 vi /etc/default/grub GRUB_TIMEOUT=5GRUB_DEFAULT=savedGRUB_DISABLE_ ...

  9. UI和UE有什么区别呢?

    UCD(以用户为中心的设计)UE(用户体验)UI(用户界面)HCI(人机交互)usability(易用性)

  10. C# 经典入门11章,比较

    1类型比较 所有的类懂从System.Object中继承了GetType()方法,这个方法和typeof()运算符一起使用,可以确定对象的类型.例如: if(myObj.GetType()==type ...