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: ...
随机推荐
- spring boot 整合redis --sea 方式1
application.properties # REDIS (RedisProperties) # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服 ...
- Linux 磁盘管理(分区、创建文件系统、挂载)
Linux设备文件可以分为两类 b : 按块为单位,随机访问设备(块设备文件) 如:硬盘 c : 按字符为单位,线性设备(字符设备文件) 如:键盘 设备文件位于/dev下 主设备号(major n ...
- 本地项目 共享 到github仓库
一.安装git客户端 Window下安装Git客户端. 二.配置Intellij idea中的Git/ GitHub 选择Github,填写Host.Login和Password,然后Test是否成功 ...
- C#反射机制详解
反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Reflection命名空间包 ...
- django 认证系统--1
django的认证系统提供认证和授权两种功能 认证系统包括如下部分: 1.Users 2.Permissions 主要是以 YES/NO 的形式反映一个用户是否能够做某事 3.Groups:就是对多个 ...
- ubuntu去除带锁文件的锁 sudo chown 用户名 目标文件夹/ -R
sudo chown 用户名 目标文件夹/ -R sudo chown han dir/ -R
- deb 和 rpm 后缀文件 区别和安装
https://blog.csdn.net/u010977122/article/details/52986217 下载一个ATOM 的deb的安装包
- springboot 整合task定时任务
一步:在启动类中加入 加入就会调用定时了. //开启定时任务 开启后就可以被扫描到 @EnableScheduling 二步:建一个tasks工具包 都会被扫描到的了 有三个类 Async ...
- (转)关闭win10的Skype
https://blog.csdn.net/qq_38285661/article/details/86663849 使用win10的小伙伴们,有没有发现一个不用的功能Skype,假如你想卸载又怕卸不 ...
- C++ : 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo,onsizeonsizing
个消息分别是:WM_SIZE.WM_SIZING.WM_GETMINMAXINFO:分别对应相应的处理函数:OnSize.OnSizing.OnGetMinMaxInfo. 当窗口大小发生变化时,响应 ...