ACM模版

描述

题解

模版大法好~~~

最短路模版题,不过需要进行一些处理来建图。

题意:已知成语至少有3个汉字,每个汉字用4个字符(十六进制数)表示,成语接龙游戏,求从第一个成语接到最后一个成语的最小花费。

读取字符串后,对前四位以及后四位十六进制字符进行转进制,转为10进制,存储起来,然后判断首尾衔接关系,建立图,然后最短路搞搞事情啊!

代码

#include <iostream>
#include <cstring>using namespace std;const int MAXN = 1010;
const int MAXL = 100;
const int INF = 0x3f3f3f3f;bool vis[MAXN];
int pre[MAXN];
int lowcost[MAXN];
int cost[MAXN][MAXN];void dijkstra(int n, int beg)
{memset(lowcost, 0x3f, sizeof(lowcost));memset(vis, false, sizeof(vis));memset(pre, -1, sizeof(pre));lowcost[beg] = 0;for (int j = 0; j < n; j++){int k = -1;int min = INF;for (int i = 0; i < n; i++){if (!vis[i] && lowcost[i] < min){min = lowcost[i];k = i;}}if (k == -1){break;}vis[k] = true;for (int i = 0; i < n; i++){if (!vis[i] && lowcost[k] + cost[k][i] < lowcost[i]){lowcost[i] = lowcost[k] + cost[k][i];pre[i] = k;}}}
}char s[MAXL];
int sst[MAXN];
int sed[MAXN];
int val[MAXN];void store(int n)
{int st = 0;for (int i = 0; i < 4; i++){st *= 16;if (s[i] >= '0' && s[i] <= '9'){st += s[i] - '0';}else{st += s[i] - 'A' + 10;}}sst[n] = st;int ed = 0;int len = (int)strlen(s);for (int i = len - 4; i < len; i++){ed *= 16;if (s[i] >= '0' && s[i] <= '9'){ed += s[i] - '0';}else{ed += s[i] - 'A' + 10;}}sed[n] = ed;
}int main(int argc, const char * argv[])
{int N;while (cin >> N, N != 0){memset(cost, 0x3f, sizeof(cost));for (int i = 0; i < N; i++){scanf("%d%s", val + i, s);store(i);}for (int i = 0; i < N; i++){for (int j = i + 1; j < N; j++){if (sst[i] == sed[j]){cost[j][i] = val[j];}if (sed[i] == sst[j]){cost[i][j] = val[i];}}}dijkstra(N, 0);if (lowcost[N - 1] == INF){cout << "-1\n";}else{cout << lowcost[N - 1] << '\n';}}return 0;
}

参考

《最短路》

HDU-1546-Idiomatic Phrases Game相关推荐

  1. HDU 1546 Idiomatic Phrases Game

    传送门 最短路. 这道题题意比较烦,其实就是成语接龙.给你一个成语的列表(字典)(每个成语用十六进制字符串表示),规定字典的第一个成语和最后一个成语是你完成成语接龙的起点和终点,然后你在字典里面选成语 ...

  2. 【HDU - 1546】 Idiomatic Phrases Game(Dijkstra,可选map处理字符串)

    题干: Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese charac ...

  3. HDU 1546 (最短路 Dijkstra算法)

    题目: Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese charac ...

  4. hdu 1546(最短路)

    题意:成语接龙的游戏,一个中文字是四个字符组成,所以只要一个字符串后四个字符与另一个字符串的头四个字符能匹配,那么就能接上,求出从第一个到最后一个的最短时间. 不知道是建图的问题还是什么,一直WA.. ...

  5. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  6. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  7. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  8. 一系列图论问题[转]

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  9. kk_想要学习的知识

    2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...

  10. 图论练习题(存起来练)

    =============================以下是最小生成树+并查集======================================  [HDU]  1213 How Man ...

最新文章

  1. 容器数据卷网络基本配置
  2. STL二级配置器allocate的解析
  3. HTML学习02之基础;元素;属性
  4. appium启动app失败_Appium-Desktop Capability 配置及启动App演示
  5. 我的博客是怎么自定义的
  6. 成绩查询数据结构c语言,学生成绩管理系统(数据结构c语言版源代码)09169.pdf
  7. python培训班-Python培训班哪家好?
  8. spring_redis整合
  9. 【元胞自动机】基于matlab六边形网格六方元胞自动机【含Matlab源码 1362期】
  10. 组态王的日历时间控件脚本
  11. Linux基础知识 | vi编辑器
  12. 字体加密woff(@font-face)防爬-学习记录
  13. 计算机中信息的表示方法 教案,计算机中的数的表示教案
  14. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例
  15. 30人围成一圈的小游戏。c语言
  16. 看inux系统中的c语言编译器,Linux系统自定义安装C语言gcc编译器图文详细教程
  17. Python中Hash值计算的学习笔记
  18. JavaCV人脸识别三部曲之三:识别和预览
  19. 逻辑函数常用的描述方法及相互间的转化
  20. 传苹果为iWatch搭配1.5英寸OLED显示屏

热门文章

  1. easyui datagrid mysql分页_Easyui 自定义分页_EasyUI 教程
  2. March 7th Wednesday (三月 七日 水曜日)
  3. 天龙八部手游服务器维护公告,天龙维护时间(天龙八部手游11月29日例行维护公告)...
  4. 纯php 给pdf加水印,如何使用PHP为现有PDF文件添加水印?
  5. 公众号第三方平台开发 教程六 代公众号使用JS SDK说明
  6. 2011微软校园招聘笔试题
  7. mind思维导图软件
  8. 一篇文章让你看懂信息安全领域的巨鳄(小白必看)
  9. javascript学习-SVG
  10. UVM--单向通信、双向通信、多向通信和通信管道