POJ-2686-Traveling by Stagecoach
来源:互联网 发布:滁州淘宝服饰 编辑:程序博客网 时间:2024/05/16 12:51
求a到b的最小花费,其中加了一些其他的因素,比如可以坐马车。
用动态规划和状态压缩就可以解决,每次的状态值需要记录到达某地和所剩的票数
代码:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=1<<10;const int maxm=31;const int inf=1<<29;int n,m,p,a,b,map[maxm][maxm],t[maxm];double dp[maxn][maxm];int main(){ while(scanf("%d%d%d%d%d",&n,&m,&p,&a,&b)!=EOF) {if(!n&&!m) break;memset(map,0,sizeof(map));for(int i=0;i<n;i++) scanf("%d",&t[i]);for(int i=0;i<p;i++){ int u,v,c; scanf("%d%d%d",&u,&v,&c); map[u][v]=map[v][u]=c;}for(int i=0;i<(1<<n);i++) fill(dp[i],dp[i]+m+1,inf);dp[(1<<n)-1][a]=0;for(int i=(1<<n)-1;i>=0;i--){ for(int u=1;u<=m;u++)for(int j=0;j<n;j++) if(i&(1<<j))for(int v=1;v<=m;v++) if(map[u][v]) {dp[i^(1<<j)][v]=min(dp[i^(1<<j)][v],dp[i][u]+map[u][v]*1.0/t[j]); }}double ans=inf;for(int i=0;i<(1<<n);i++) ans=min(ans,dp[i][b]);if(ans==inf) printf("Impossible\n");else printf("%.3f\n",ans); } return 0;}
0 0
- POJ-2686-Traveling by Stagecoach
- POJ 2686 Traveling by Stagecoach
- POJ 2686 Traveling by Stagecoach
- POJ 2686 Traveling by Stagecoach
- POJ 2686 Traveling by Stagecoach
- poj 2686 Traveling by Stagecoach
- POJ 2686 Traveling by Stagecoach
- Traveling by Stagecoach POJ
- POJ 2686 Traveling by Stagecoach 壮压DP
- poj 2686 Traveling by Stagecoach(状压dp)
- poj 2686 Traveling by Stagecoach【状态压缩】
- POJ 2686 Traveling by Stagecoach(状压DP)
- Poj 2686 Traveling by Stagecoach【状压dp】
- poj 2686 Traveling by Stagecoach(状压dp)
- 【POJ 2686 Traveling by Stagecoach】+ 状压dp
- Traveling by Stagecoach POJ - 2686 状压dp
- poj 2686 Traveling by Stagecoach 状态压缩
- POJ 2686 Traveling by Stagecoach 笔记
- PHP如何添加自带的扩展库
- 关于asp.net网站session失效的问题
- 第2周:计算圆的面积
- 面试-事务属性小结和事务的隔离级别
- 使用 Eclipse 平台进行调试
- POJ-2686-Traveling by Stagecoach
- 线程同步---同步锁(Lock)
- socket与http的区别
- 题目1012:畅通工程
- 附近的人功能
- 排序算法(3):冒泡排序与快速排序
- Android apk反编译 重打包 重签名 对齐
- NGUI、tk2d鼠标事件屏蔽
- php中常用的字符串格式化函数