- 浏览: 205034 次
- 性别:
- 来自: 武汉
-
文章分类
- 全部博客 (137)
- c++ (74)
- c++,算法,回溯 (2)
- DP问题。 (9)
- DP问题,0/1背包问题 (3)
- 数学问题 (6)
- 贪心算法 (10)
- 排序 (16)
- 数据结构 (7)
- 容器 (2)
- 模拟问题 (2)
- 水题 (8)
- 并查集 (3)
- 非技术 (2)
- 素数问题 (1)
- DFS (3)
- 二叉树 (1)
- 递归 (1)
- 图论 (5)
- 最小生成树 (5)
- 最短路径 (6)
- bell_flaod算法 (2)
- hash (3)
- 二分查找 (1)
- 搜索 (5)
- BFS (5)
- STL (3)
- 字符串hash (1)
- 拓扑排序 (1)
- 字典树 (4)
- 哈弗曼树 (1)
- KMP (7)
- 线段树 (9)
- 树状数组 (6)
- 全排列 (2)
- DP问题 (2)
- LCS (1)
- 最长不下降子序列 (2)
- 面试经验 (3)
题意:历史上,曾用7个小写字母来表示每种truck的型号,每两种型号之间的差距为字母串中不同字母的个数。现在给出n种不同型号的truck,问怎样使
1/Σ(to,td)d(to,td)的值最小。(即找到一条连接所有truck的最短路径。典型的最小生成树的问题, discuss里说,Prim算法适合稠密图,Kruskal算法适合稀疏图,可以使用prim和kruskal两种方法。该题是稠密的图。求最小生成树的最段路径问题:
不说了 直接看代码:
#include <iostream> using namespace std; const int Max=2005; const int inf=0xfffff; int n,ans; int map[Max][Max],dis[Max]; int min(int a,int b) { return a<b?a:b; } void prim() { int i, j, now, min_node, min_edge; for(i = 1; i <= n; i ++) dis[i] = inf; now = 1; ans = 0; for(i = 1; i < n; i ++) { dis[now] = -1; min_edge = inf; for(j = 1; j <= n; j ++) if(j != now && dis[j] >= 0) { dis[j] = min(dis[j], map[now][j]); if(dis[j] < min_edge) { min_edge = dis[j]; min_node = j; } } now = min_node; ans += min_edge; } } int main() { int i,j,k; char truck[Max][8]; while (cin>>n&&n!=0) { for (i=1;i<=n;i++) { scanf("%s",&truck[i]); for (j=i-1;j>=1;j--) { int edge=0; for(k=0;k<7;k++) if(truck[i][k]!=truck[j][k]) edge++; map[i][j]=map[j][i]=edge; } } prim(); printf("The highest possible quality is 1/%d.\n", ans); } return 0; }具体的prim模板参见前几题,关于最小生成树问题,未完待续……
发表评论
-
虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
2013-08-29 14:34 861虚函数:虚函数是C++中用于实现多态(polymorphis ... -
排序算法总结
2013-05-17 11:00 859选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, ... -
poj 3122
2012-12-11 19:51 892题意:作者要开一个生日party,他现在拥有n块高度都为1 ... -
poj 3273
2012-12-11 16:49 1002题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份 ... -
字典树学习材料
2012-05-30 14:29 986字典树,又称单词查找树,Trie树,是一种树形结构,典型应 ... -
poj 1159
2012-05-28 19:08 1469题目大意:给你一段字符串,让你求出在中间最少加入几个字符 ... -
poj 3176
2012-05-28 14:47 1049大致题意: 输入一个n层的三角形,第i层有i个数,求从第 ... -
poj 1260
2012-05-28 09:54 1635题意解释: 有n个等级的珠宝,等级依次升高,等级越高价钱越高 ... -
poj 1836
2012-05-28 09:22 2741是POJ2533的扩展题。题意不难,令到原队列 ... -
poj 2533
2012-05-26 15:36 1300在做这道题目之前,首先让我们了解一下什么是LIS算法,LIS俗 ... -
poj 3267
2012-05-26 09:43 821从程序可以看出,第i个位置到L所删除的字符数,总是先取最坏情况 ... -
poj 1276
2012-05-25 16:20 2430题意: 这道题的意思是给你一堆钱,各种面值的都有,比 ... -
poj 1094
2012-05-25 13:54 1131题意:给出字母个数,和有限个有序对(a<b)求出能确定字 ... -
poj 3393
2012-05-23 17:00 1277大致题意: 科普文一篇,文章80%都是无用信息,因为 ... -
poj 3007
2012-05-14 10:21 1009大致题意: 给定一个字符串,从任意位置把它切为两半, ... -
poj 3096
2012-05-10 21:09 1041题意: 定义D-pairs表示取字符串s中相距为D的两个字母 ... -
poj 1426
2012-04-26 20:11 2184大致题意: 给出一个整数n,(1 <= n <= ... -
poj 1797
2012-04-24 15:05 1639题目大意是就是何处一个图,n个顶点和m条边,每个边都有最大承载 ... -
poj 1338
2012-04-23 10:20 1276题意:题目意思是求由2,3,5的乘积组成的数从大到小排列,从1 ... -
poj 2021
2012-04-19 15:00 970题意:Ted今年100岁,给出n对他家族的关系:“父 ...
相关推荐
【标题】"POJ1789-Truck History【Prim】"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目要求参赛者利用Prim算法来解决一个具体的问题。 【描述】"北大POJ1789-Truck ...
【标题】"poj1789.zip_history" 指的是一个与编程竞赛问题相关的压缩文件,其中包含了对POJ(Programming Online Judge)问题1789的历史记录或者解决方案。POJ是一个在线编程竞赛平台,它提供了各种算法题目供程序员...
poj 1789 Truck History.md
标题中的“POJ 1789 最小生成树之prim算法”指的是一个在线编程竞赛题目,来源于普林斯顿开放在线课程(POJ)平台。该题目要求参赛者实现Prim算法,这是一种解决图论问题中寻找最小生成树的经典算法。最小生成树是在...
* 最小生成树算法:例如 Prim、Kruskal,例如 poj1789、poj2485、poj1258、poj3026。 * 拓扑排序:例如 poj1094。 * 二分图的最大匹配:例如 poj3041、poj3020。 * 最大流的增广路算法:例如 poj1459、poj3436。...
- 最小生成树算法:如Prim算法和Kruskal算法,用于找出图中的最小生成树,如`poj1789, poj2485`。 - 拓扑排序:适用于有向无环图,用于确定任务的执行顺序,如`poj1094`。 - 二分图的最大匹配:如匈牙利算法,...
2. **最小生成树**:Prim算法和Kruskal算法,用于构建图的最小生成树(poj1789, poj2485, poj1258, poj3026)。 3. **网络流**:Max-flow算法,用于解决最大流问题(poj1094)。 4. **拓扑排序**:解决有向无环图的...
- **例题**:poj1789, poj2485, poj1258, poj3026 - **解释**:最小生成树算法主要包括Prim算法和Kruskal算法。 ##### (4) 拓扑排序 - **例题**:poj1094 - **解释**:拓扑排序是对有向无环图的一种排序方式,可以...
- **最小生成树算法**:prim和kruskal算法,如poj1789,用于找到图的最小成本连接。 - **拓扑排序**:对有向无环图的排序,如poj1094。 - **二分图最大匹配**:匈牙利算法,如poj3041和poj3020,解决分配问题。 ...
- (poj1789, poj2485, poj1258, poj3026):介绍普里姆算法(Prim)和克鲁斯卡尔算法(Kruskal),用于寻找加权无向图的最小生成树。 4. **拓扑排序**: - (poj1094):适用于有向无环图(DAG)的一种排序方式,...
如poj3278、poj2049、poj3083是图遍历的例子,poj1860、poj3259等则是最短路径问题,poj1789、poj2485等则涉及最小生成树。 3. **数据结构**:包括串、排序、简单并查集、哈希表、二分查找、哈夫曼树和堆。poj1035、...
- POJ 1789、POJ 2485:Prim算法的具体应用。 - POJ 1258、POJ 3026:Kruskal算法的实际案例。 #### 字符串处理 - **题目示例**: - POJ 3349、POJ 3274:字符串匹配及Hash应用。 - POJ 2151、POJ 1840:利用...
### ACM新手刷题攻略之POJ ... - 推荐题目:[poj1789](https://vjudge.net/problem/POJ-1789)、[poj2485](https://vjudge.net/problem/POJ-2485)、[poj1258](https://vjudge.net/problem/POJ-1258)、[poj3026]...
- poj1789 - poj2485 - poj1258 - poj3026 - **应用场景**:适用于构建最小成本网络、电力线路铺设等问题。 **4. 拓扑排序** - **定义**:对于有向无环图(DAG),拓扑排序是按某种顺序对顶点进行排序,使得...
3. **最小生成树算法**:Prim和Kruskal方法,用于找到图中权重最小的连接所有节点的子树,如POJ1789、2485、1258和3026。 4. **拓扑排序**:对有向无环图(DAG)的节点进行线性排序,如POJ1094。 5. **二分图的最大...
- **示例题目**: poj1789, poj2485, poj1258, poj3026 - **知识点**: - **Prim算法**:适用于稠密图,从任意一个顶点开始构建最小生成树。 - **Kruskal算法**:适用于稀疏图,按照边的权值从小到大依次加入到树中...
* 最小生成树算法:prim、kruskal、POJ1789、POJ2485、POJ1258、POJ3026 * 拓扑排序:POJ1094 * 串算法:POJ1035、POJ3080、POJ1936 * 哈希表和二分查找等高效查找法:POJ3349、POJ3274、POJ2151、POJ1840、POJ2002...
+ poj1789, poj2485, poj1258, poj3026 * 拓扑排序:poj1094 * 二分图的最大匹配:匈牙利算法 + poj3041, poj3020 * 最大流的增广路算法:KM算法 + poj1459, poj3436 三、数据结构 * 串:poj1035, poj3080, poj...
例如,POJ1860和POJ3259是最短路径算法的典型例题,而POJ1789和POJ2485则是最小生成树算法的经典例题。 数据结构部分涵盖了串、排序、简单并查集、哈希表和二分查找、哈夫曼树、堆和trie树八个方面。例如,POJ1035...