poj 1789 prime
链接:Truck History - POJ 1789 - Virtual Judge https://vjudge.net/problem/POJ-1789
题意:先给出一个n,代表接下来字符串的个数,接下来n个字符串,每个字符串长度为7,没有完全相同的字符串,字符串之间的距离是两个字符串里不同字符的个数(相同位置两两对比),然后求出从某个点到其他点距离和的最小值(分子一直是1,Q越小,1/Q越大),其实就是叫我们求出最小生成树,先字符串两两相比建图,然后求最小生成树。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define MAXN 2005
#define INF 0x3f3f3f
char str[MAXN][];
int edge[MAXN][MAXN];
int vis[MAXN],dis[MAXN];
int n,m,k,t,ans;
int dist(int a,int b)
{
int ans=;
for(int i=;i<;i++)
{
if(str[a][i]!=str[b][i])
ans++;
}
return ans;
}
void build() //建图
{
memset(edge,0x3f,sizeof(edge));
for(int i=;i<n-;i++)
{
for(int j=i+;j<n;j++)
{
edge[i][j]=edge[j][i]=dist(i,j);
}
}
}
void prime() //套模板的
{
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
dis[i]=edge[i][];
vis[]=;
for(int i=;i<n-;i++)
{
int min1=INF,u=-;
for(int j=;j<n;j++)
{
if(!vis[j]&&dis[j]<min1)
{
min1=dis[j];
u=j;
}
}
if(u==-)
return;
vis[u]=;
ans+=min1;
for(int j=;j<n;j++)
{
if(!vis[j]&&dis[j]>edge[u][j])
dis[j]=edge[u][j];
}
}
}
int main()
{
while((cin>>n)&&n)
{
for(int i=;i<n;i++)
cin>>str[i];
build(); //建图
ans=;
prime();
cout<<"The highest possible quality is 1/"<<ans<<'.'<<endl;
}
return ;
}
poj 1789 prime的更多相关文章
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- poj 2689 Prime Distance(大区间素数)
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...
- POJ 3126 Prime Path(素数路径)
POJ 3126 Prime Path(素数路径) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 The minister ...
- Miller_rabin算法+Pollard_rho算法 POJ 1811 Prime Test
POJ 1811 Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 32534 Accepted: 8 ...
- POJ 3518 Prime Gap(素数)
POJ 3518 Prime Gap(素数) id=3518">http://poj.org/problem? id=3518 题意: 给你一个数.假设该数是素数就输出0. 否则输出比 ...
- Kuskal/Prim POJ 1789 Truck History
题目传送门 题意:给出n个长度为7的字符串,一个字符串到另一个的距离为不同的字符数,问所有连通的最小代价是多少 分析:Kuskal/Prim: 先用并查集做,简单好写,然而效率并不高,稠密图应该用Pr ...
- BFS POJ 3126 Prime Path
题目传送门 /* 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 BFS:先预处理1000到9999的素数,简单BFS一下.我没输出Impossible都AC,数据有点弱 */ /**** ...
- POJ 1789 -- Truck History(Prim)
POJ 1789 -- Truck History Prim求分母的最小.即求最小生成树 #include<iostream> #include<cstring> #incl ...
- [POJ]P3126 Prime Path[BFS]
[POJ]P3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35230 Accepted: ...
随机推荐
- Flex4学习笔记2--代码保存在单独的文件中
1 <!--调用外部as文件--> <fx:Script> <![CDATA[ import mx.controls.Alert; import a.Test3; ]]& ...
- ubuntu 系统分区
参考:https://blog.csdn.net/kudou1994/article/details/80913059
- javascrpt基础入门
JavaScript 是一门脚本语言,同HTML语言一样,需要浏览器或者JavaScript解释器,解释执行. 1. 第一个JavaScript程序: <html> <body> ...
- leetcode1008
class Solution: def __init__(self): self.root = None def construct(self,order,root,i): if i==len(ord ...
- __file__ 作用以及模块导入方法
python 执行py 文件的时候,默认就会把当前目录增加到sys.path中 import os print(__file__) #打印文件当前的位置 直接在目录里面执行,结果显示当前文件(pych ...
- redis异常和注意点
目录: 1. 修改配置不起作用 2.Connection reset by peer: socket write error 3. redis-cli 查看中文乱码 1. 修改配置不起效果 我们修改了 ...
- java配置slf4j日志系统
首先要导入的包: import: 每个类中加入下面,其中 RdiFtpDownload.class 是当前的类名.class 然后就可以打日志了: 配置 log4j.properties log4j. ...
- ORM一对多查询对象
正向查询: 取人民日报出版社出版的所有书籍 方式一: pub_obj = Publish.objects.filter(name='人民日报')[0] ret = Book.objects.filte ...
- TypeScript语言学习笔记(2)
接口 // 在参数类型中定义约束 function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label ...
- 浅析SQL Server 中的SOS_SCHEDULER_YIELD类型的等待
本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊 ...