Uva 10537 过路费
题目链接:http://vjudge.net/contest/143062#problem/C
题意:
给定一个无向图,大写字母是城市,小写字母是村庄,经过城市交过路费为当前货物的%5,路过村庄固定交1,给定起点终点和到目标地点要剩下的货物,问最少要带多少货物上路,并输出路径,如果有多种方案,要求字典序最小.
分析:
逆向最短路: 因为要求的就是起点的货量,从终点出发求最短路,但是,费用的计算要处理,重新定义d 数组,d[i] 表示,进入节点 I 以后,还要多少 d[i] 个 货品 才能到达终点。d[T] = P;
然后就是怎么求 d[i] 了,根据 i 的类型, i >=26 ,就需要 d[i] + 1;
否则就是 20 里面抽 1;
#include <bits/stdc++.h> using namespace std;const int maxn = 52 + 10; const long long INF = 1LL << 60;int n; int G[maxn][maxn]; bool mark[maxn]; int p; int src; int dest; long long d[maxn];int read_node() {char ch[9];scanf("%s", ch);if(ch[0] >= 'A' && ch[0] <= 'Z') return ch[0] - 'A';else return ch[0] - 'a' + 26; }char format_node(int u) {return u < 26 ? 'A' + u : 'a' + (u - 26); }// 拿着item个东西去结点next,还剩多少个东西 long long forward(long long item, int next) {if(next < 26) return item - (item + 19) / 20;return item - 1; }// 至少要拿着多少个东西到达结点u,交税以后还能剩d[u]个东西 long long back(int u) {if(u >= 26) return d[u]+1;long long X = d[u] * 20 / 19; // 初始值while(forward(X, u) < d[u]) X++; // 调整return X; }void solve() {n = 52; // 总是有52个结点memset(mark, 0, sizeof(mark));d[dest] = p;mark[dest] = 1;for(int i = 0; i < n; i++) if(i != dest){d[i] = INF;if(G[i][dest]) d[i] = back(dest);}// Dijkstra主过程,逆推while(!mark[src]){// 找最小的dint minu = -1;for(int i = 0; i < n; i++) if(!mark[i]){if(minu < 0 || d[i] < d[minu]) minu = i;}mark[minu] = 1;// 更新其他结点的dfor(int i = 0; i < n; i++) if(!mark[i]){if(G[i][minu]) d[i] = min(d[i], back(minu));}}printf("%lld\n", d[src]);printf("%c", format_node(src));int u = src;long long item = d[src];while(u != dest){int next;for(next = 0; next < n; next++) // 找到第一个可以走的结点if(G[u][next] && forward(item, next) >= d[next]) break;item = d[next];printf("-%c", format_node(next));u = next;}printf("\n"); }int main() {int kase = 0;while(scanf("%d", &n) == 1 && n >= 0){memset(G, 0, sizeof(G));for(int i = 0; i < n; i++){int u = read_node();int v = read_node();if(u != v) G[u][v] = G[v][u] = 1;}scanf("%d", &p);src = read_node();dest = read_node();printf("Case %d:\n", ++kase);solve();}return 0; }
转载于:https://www.cnblogs.com/TreeDream/p/6105265.html
Uva 10537 过路费相关推荐
- Uva 10537过路费 反向最短路
题意 运送货物需要缴纳过路费,进入一个村庄需要缴纳1个单位的货物,而进入一个城镇时,每20个单位的货物中就要上缴1个单位(向上取整).你的任务时已知运送到终点的货物数量,求出初始时所需要的最少货物,以 ...
- uva 10537 The Toll! Revisited
题目:The Toll! Revisited 题意:给一张由A~Z和a~z构成的无向图,大写字母表示城镇,小写字母表示村庄.每运送20个物品(不足20个当20个)进入城镇需要交1个过路费,无论运送多少 ...
- 图论算法与模型(训练指南题库)
一.基础题目 1.UVA 11624 Fire!迷宫问题 多源BFS 题意: 帮助joe走出一个大火蔓延的迷宫,其中joe每分钟可往上下左右四个方向之一走,所有着火的格子都会蔓延(空格与着火格有公共边 ...
- android备忘录app设计er图,图、流程图、ER图怎么画及常见画图工具(流程图文章汇总)...
跟我一起写Makefile--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量) 目录(?)[-] 使用变量 一变量的基础 二变量中的变量 三变量高级用法 四追加变 ...
- [搜索]UVa 129 困难的串
题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...
- uva 401.Palindromes
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- Uva 3767 Dynamic len(set(a[L:R])) 树套树
Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...
- UVA 11752 超级幂
UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & ...
- UVa 11174 - Stand in a Line
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
最新文章
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
- python之commands模块
- php7.0源码包下载,PHPDisk 7.0 V-Core系列发布,源码下载[更新20140821]
- tar php启动,安装php过程(FastCGI模式)
- Spring 3.1缓存抽象教程
- 关于选择排序的优化——同时找出最小值与最大值
- 注解 @CrossOrigin
- 万元华为旗舰新机超21万人预约,网友:有钱人真的多!
- 送专利啦~~ .Net高阶异常处理之TopLevelEH
- 深入Linux网络核心堆栈--netfilter详解(整理)
- VBA调用程序时,exe程序一闪而过,解决方法
- Embedded ProC(嵌入式ProC)与Tuxedo中间件
- oracle四大索引类型,各种Oracle索引类型介绍
- 只需10行代码就能对Excel文件进行批量去重~
- php把文字转换unicode,unicode编码转换:PHP将汉字转换成Unico_php
- 如何制作一个蓄力跳的功能
- Mac 在指定目录下打开终端的方式
- 队列练习之Example005-Q 是一个队列,S 是一个空栈,实现将队列中的元素逆置的算法
- 中国特殊配方奶粉市场销售渠道及营销策略研究报告(2022-2027年)
- Unity报错但VS(代码编辑器)不报错,Unity提示需要继承自MonoBehavior,Unity提示缺少命名空间或者DLL,Unity点击UI或者GameObject无法在Hierarchy锁定
热门文章
- linux poll in,Linux poll机制详细讲解
- 不用精子就能繁育后代,科学家只用1个卵细胞就培育出健康小鼠,来自上交医学院 | PNAS...
- 英伟达一大波硬件来袭:今日GTC发布专业GPU与DPU,为收购ARM将在英国建超算
- 墙面也能变镜子,只看影子就能还原视频,MIT新算法让摄像头无死角
- 如果没有StyleGAN2,真以为初代就是巅峰了:英伟达人脸生成器高能进化,弥补重大缺陷...
- 千万不要相信程序员在加班时间写的代码!
- 微信小程序之圆形进度条(自定义组件)
- 洛谷——P2660 zzc 种田
- 一起感受不一样的项目沙盘
- Spring MVC整合Velocity