UVA10537 The Toll! Revisited

题目

给定图G=(V,E),V中有两类点,一类点(A类)在进入时要缴纳1的费用,另一类点(B类)在进入时要缴纳当前携带金额的120(不足20的部分按20算)
  已知起点为S,终点为T,希望在到达T时能够拥有P的金额,问一开始在S最少要携带多少金额,并求出路径(若有多条,输出字典序最小的)
  从S离开时不需要缴费,进入T时需要缴费

样例输入

1
a Z
19 a Z
5
A D
D X
A b
b c
c X
39 A X
-1

样例输出

Case 1: 20
Case 2: 44

题解

初始货物数量未知,但终点货物数量已知。可以从终点开始向起点跑
走一次dijkstra即可

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
const ll inf=1LL<<60;
char s1[2],s2[2];
vector<int> mp[210];
ll dis[210];
bool vis[210];
int pre[210];
ll sum;
ll calc(char x){if(islower(x)) return dis[x]+1;else{ll tmp=ceil(dis[x]*20*1.0/19); return tmp;}
}
void dijkstra(int start,int ed){for(int i=0;i<210;i++){dis[i]=inf;vis[i]=0;pre[i]=-1;}dis[start]=sum; vis[start]=1;for(int i=0;i<mp[start].size();i++){dis[mp[start][i]]=calc(start); pre[mp[start][i]]=start;}for(int i=0;i<200;i++){ll minn=inf;    int t=-1;for(int j=1;j<=200;j++)if(!vis[j]&&dis[j]<minn){minn=dis[j];t=j;}if(t!=-1){vis[t]=1;ll cost=calc(t);for(int j=0;j<mp[t].size();j++)if(!vis[mp[t][j]]&&dis[mp[t][j]]>cost){pre[mp[t][j]]=t; dis[mp[t][j]]=cost;}    }}
}
int main()
{int tt=0;   int n;while(scanf("%d",&n)!=EOF&&n!=-1){for(int i='A';i<='Z';i++)   mp[i].clear();for(int i='a';i<='z';i++)   mp[i].clear();for(int i=0;i<n;i++){scanf("%s %s",s1,s2);mp[s1[0]].push_back(s2[0]);mp[s2[0]].push_back(s1[0]);}scanf("%d %s %s",&sum,s1,s2);dijkstra(s2[0],s1[0]);printf("Case %d:\n",++tt);printf("%lld\n",dis[s1[0]]);printf("%c",s1[0]);int u=s1[0];while(pre[u]!=-1){u=pre[u];printf("-%c",u);}printf("\n");}
}

UVA10537 The Toll! Revisited相关推荐

  1. UVA10537 The Toll! Revisited (思维、最短路、输出字典序最小路径)

    整理的算法模板合集: ACM模板 题目链接 我们要注意去的时候交的n/20单位的货物,但是倒着回去求答案的时候我们要加上ceil(n/19.0)(自己手算) 字典序中大写字母比小写字母更小 注意看数据 ...

  2. uva 10537 The Toll! Revisited

    题目:The Toll! Revisited 题意:给一张由A~Z和a~z构成的无向图,大写字母表示城镇,小写字母表示村庄.每运送20个物品(不足20个当20个)进入城镇需要交1个过路费,无论运送多少 ...

  3. Structure-from-Motion Revisited

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者fishmarch授权转载,不得擅自二次转载.原文链接:https://zhuanlan ...

  4. Cow Toll Paths(floyd变形)

    链接:https://ac.nowcoder.com/acm/contest/1077/K 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  5. 翻译 | Placing Search in Context The Concept Revisited

    翻译 | Placing Search in Context The Concept Revisited 原文 摘要 [1] Keyword-based search engines are in w ...

  6. 【论文研读】Similarity of Neural Network Representations Revisited (ICML2019)

    Title: Similarity of Neural Network Representations Revisited (ICML2019) Author:Simon Kornblith ...( ...

  7. [论文阅读笔记14]Nested named entity recognition revisited

    一, 题目 Nested Named Entity Recognition Revisited 重访问的嵌套命名实体识别 二, 作者 Arzoo Katiyar and Claire Cardie D ...

  8. IO Workload Characterization Revisited: A Data-Mining Approach

    文章目录 摘要 1 介绍 2 研究背景 2.1 相关工作 2.2 FTL 2.3 工作负载分析在SSD 中的应用 3 总览 4 表征IO Trace 4.1 参数定义 4.2 IO Trace 数据收 ...

  9. Pooling Revisited: Your Receptive Field is Suboptimal

    Pooling Revisited: Your Receptive Field is Suboptimal paper:https://arxiv.org/abs/2205.15254 摘要 感受野的 ...

最新文章

  1. XenServer 显示当前使用者的列表
  2. (二)企业部分之lnmp环境的搭建:mysql源码安装
  3. (0002) iOS 开发之开发者iOS 10 正式版体验报告
  4. 硬核创客DIY遥控氦气球飞行器——会飞的鲨鱼的诞生的全过程
  5. java导出oracle到excel_java实现将oracle表中的数据导出到excel表里
  6. ASP.NET伪静态-无法读取配置文件,因为它超过了最大文件大小的解决办法
  7. Python - Excel文件与CSV文件相互转化
  8. MINI2440 TD35 P35触摸屏不能使用? 让我们来把一线触控改四线触控
  9. 使用PGP加密你的文件
  10. 25个JAVA 机器学习工具包
  11. iVX低代码平台系列制作简单的登录界面
  12. ps4计算机,设置PS4连接电脑
  13. iOS6.1/iOS6.0.1完美越狱迟迟不现身 pod2g发推文澄清
  14. Shiro框架 Subject、SecurityManager、线程之间的关系
  15. 数字IC前端设计精讲课——IC修真院直播
  16. 安卓Android公交查询系统app资源分享
  17. ios王者荣耀服务器维护31号,王者荣耀3月31日IOS无法更新什么情况?王者荣耀ios更新特别慢解决方法...
  18. 十进制小数转换为R进制小数
  19. 声控门的工作原理与人工智能AI
  20. Java中InputStream装饰器模式的大家族

热门文章

  1. 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
  2. Android多进程实现,一个APP多个进程
  3. 友善之臂(FriendlyArm)NanoPi无线网络设置
  4. 8个你最想知道的数据中台问题,我们这次聊个透
  5. 【毕业设计】深度学习图像风格迁移算法研究与实现 - python 卷积神经网络
  6. 拉伯杠杆平台|沪指上涨,大金融板块领涨,有股票连续5涨停!
  7. Python金融数据分析入门到实战-视频课程
  8. outlook——分类及密送
  9. 爱情七十六课,门当户对
  10. python函数文档说明调用方式_调用函数方法