在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习。

这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m。

YellowSatr准备采用联想记忆法来背诵这n个单词:

1、如果YellowStar凭空背下一个新词T,需要消耗单词长度m的精力

2、如果YellowSatr之前已经背诵了一些单词,它可以选择其中一个单词Si,然后通过联想记忆的方法去背诵新词T,需要消耗的精力为hamming(Si, T) * w。

hamming(Si, T)指的是字符串Si与T的汉明距离,它表示两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。

由于YellowStar还有大量繁重的行政工作,因此它想消耗最少的精力背诵下这n个单词,请问它最少需要消耗多少精力。

Input

包含多组测试数据。

第一行为n, m, w。

接下来n个字符串,每个字符串长度为m,每个单词均为小写字母'a'-'z'组成。

1≤n≤1000

1≤m, w≤10

Output

输出一个值表示答案。

Sample Input

3 4 2
abch
abcd
efgh

Sample Output

10

Hint

最优方案是:先凭空记下abcd和efgh消耗精力8,在通过abcd联想记忆去背诵abch,汉明距离为1,消耗为1 * w = 2,总消耗为10。

明明昨天刚学了生成树,结果今天做就没想到建图,真的蒟蒻。

因为要覆盖全部单词,那么可以想到生成树,那什么可以作为两个结点单词的链接呢,肯定是花费了,而且需要最小,那就是最小生成树了。

嗯这个先遍历一遍 ,把两两单词之间的花费求出来,以此为路径长度,这样求个最小生成树,最后加上一个结点的值即m就好。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; char word[][]; struct Node
{
int x,y,w;
}node[];
int p[];
int finds(int x)
{
return p[x] == x?x:p[x] = finds(p[x]);
}
bool cmp(Node a,Node b)
{
return a.w<b.w;
}
int main()
{
int n,m,w;
while(~scanf("%d%d%d",&n,&m,&w))
{
int tot = ;
for(int i=;i<n;i++)
{
scanf("%s",word[i]);
} for(int i=;i<n-;i++)
{
for(int j=i+;j<n;j++)
{
int num = ;
for(int k=;k<m;k++)
{
if(word[i][k] != word[j][k])
{
num++;
}
}
node[tot].x = i;
node[tot].y = j;
node[tot++].w = num*w < m?num*w:m;
}
}
sort(node,node+tot,cmp);
int ans = ;
for(int i=;i<n;i++)p[i]=i;
for(int i=;i<tot;i++)
{
int x = finds(node[i].x);
int y = finds(node[i].y);
if(x != y)
{
ans += node[i].w;
p[x] = y;
}
}
printf("%d\n",ans+m);
}
}

FZU 2254 英语考试 (最小生成树)的更多相关文章

  1. FZU 2254 英语考试

    在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习. 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m. YellowSatr准备采用联想记忆法来背诵这 ...

  2. FOJ Problem 2254 英语考试

                                                                                                        ...

  3. [FZU2254]英语考试

    在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习. 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m. YellowStar准备采用联想记忆法来背诵这 ...

  4. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  5. Java初学者作业——编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级。定义方法实现学生成绩的评测功能。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级.要求:定义方法实现学生成绩的评测功能. 学生的英语考试成绩进行评测,评测规 ...

  6. 英语考试 FZU - 2254 (最小生成树)

    先选一个单词出来完全自己背,然后从这个单词到其他各个单词所需要的精力看成距离,然后用最小生成树把这些单词连接起来,就是通过我现在选的这个单词到其他各个单词的最小精力,然后再加上把这个单词背起来的精力, ...

  7. 英语能力考试 All In One

    英语能力考试 All In One 托福,雅思,托业 TOEIC 托业考试 Test of English for International Communication (TOEIC) 国际交流英语 ...

  8. 2017 Fzu校赛 [Cloned]

    A - Salty Fish 海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼.一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向, ...

  9. 英语学习APP—百词斩

    英语学习APP-百词斩 1.简介: 百词斩是由成都超有爱科技有限公司针对英语学习开发的一款"图背单词软件".软件为每一个单词提供了趣味的配图和例句,让记单词成为一种乐趣. 百词斩覆 ...

随机推荐

  1. 使用 mod_rewrite 来修改 Confluence 6 的 URLs

    备注:这个页面的文档是 Apache 的配置,而不是 Confluence 自己的配置.Atlassian 将会对 Confluence 的配置提供支持,但是我们不能保证能够对你所有在配置 Apach ...

  2. Confluence 6 恢复一个站点

    这个页面对如何从一个 XML 导出文件中恢复到一个已经存在的 Confluence 站点进行描述. 如果你希望导入数据倒一个新的站点,请参考 restoring from backup during ...

  3. linux用户

    hen we are travelling, we find ourselves in new places and new spaces, physically and internally; it ...

  4. Python基础之继承与派生

    一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...

  5. Gson将字符串转map时,int默认为double类型

      gson能够将json字符串转换成map, 但是在转成map时, 会默认将字符串中的int , long型的数字, 转换成double类型 , 数字会多一个小数点 , 如 1 会转成 1.0 Gs ...

  6. Python+selenium自动化测试中Windows窗口跳转方法

    Python+selenium自动化测试中Windows窗口跳转方法 #第一种方法 #获得当前窗口 nowhandle=driver.current_window_handle #打开弹窗 drive ...

  7. spring cloud feign覆写默认配置级feign client的日志打印

    一.覆写fegin的默认配置 1.新增配置类FeignConfiguration.java package com.config; import org.springframework.context ...

  8. HTTP协议请求头信息和响应头信息

    阅读目录 http的请求部分 常用请头信息 常用响应头信息 http的请求部分 基本结构 请求行 GET  /test/hello.html HTTP/1.1 消息头(并不是每一次请求都一样) 空行 ...

  9. python——mysql京东数据库设计案例(源码)

    # 显示界面信息# 循环界面信息# 根据用户输入数据来做相应的选择from pymysql import connect def jingdong_info(): '''#显示界面信息''' prin ...

  10. python之字符编码

    1.以什么编码存的就以什么编码取出; 内存固定使用unicode编码; 我们可以控制的编码是往硬盘存放或者基于网络传输选择编码. 2.数据是最先产生于内存中,是unicode格式,要想传输需要转成by ...