题干:

在过三个礼拜,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,不然就不好处理了。最后再加上一个起始m就是答案。因为构成了一个完全图,所以prim算法肯定更快一些。这里就不管那些了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e6 + 5;
int f[MAX];
int n,m,w;
char s[1005][55];
struct Edge {int u,v;int w;
} e[MAX];
bool cmp(Edge a,Edge b) {return a.w < b.w;
}
int getf(int v) {return v == f[v] ? v : f[v] = getf(f[v]);
}
void merge(int u,int v) {int t1 = getf(u);int t2 = getf(v);f[t2] = t1;
}
int hamming(int x,int y) {int res = 0;for(int i = 0; i<m; i++) {res += s[x][i] != s[y][i]; }return res;
}
int main()
{while(~scanf("%d%d%d",&n,&m,&w)) {int tot = 0;for(int i = 1; i<=n*n; i++) f[i] = i;for(int i = 1; i<=n; i++) scanf("%s",s[i]);for(int i = 1; i<=n; i++) {for(int j = i+1; j<=n; j++) {e[++tot].u = i;e[tot].v = j;e[tot].w = min(w*hamming(i,j),m);}}int ans = 0;sort(e+1,e+tot+1,cmp);for(int u,v,i = 1; i<=tot; i++) {u = e[i].u,v = e[i].v;if(getf(u) != getf(v)) {merge(u,v);ans += e[i].w;}}printf("%d\n",m + ans);        }return 0 ;
}

【FZU - 2254】英语考试(最小生成树,思维,建图)相关推荐

  1. 英语考试(最小生成树)

    Problem 2254 英语考试 Accept: 35    Submit: 72 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem ...

  2. 计算机发展英语思维导图,怎样画出英语课文总结思维导图

    怎样画出英语课文总结思维导图 2018-11-26 17:00:26 0点赞 3收藏 0评论 步入小学的时候,英语就与我们打交道了,这门学科也引起了家长很大的重视,都想要自己的孩子成长的更加完美,但是 ...

  3. 套用模板绘制高中英语虚拟语气思维导图简单方法介绍

    英语,想必大家都不陌生,当我们步入校园的时候就和英语接触,从简单到复杂,步入初中你就要懂得英语的不同语法,根据语法来了解句子的含义了,下面是小编总结的英语学习中经常使用虚拟语气知识点总结思维导图思维导 ...

  4. 男生和女生(思维建图,最大独立集问题)

    男生和女生(思维建图,最大独立集问题) 问题描述 在大学二年级,一些人开始了同学之间罗曼蒂克关系的研究.有"罗曼蒂克"关系是针对男生和女生之间的关系而言的.研究的原因是找到满足以下 ...

  5. 计算机英语第一张思维导图,小学语文、数学、英语思维导图模板集合,怎么画好看的思维导图...

    原标题:小学语文.数学.英语思维导图模板集合,怎么画好看的思维导图 小学的孩子成绩不理想.注意力不集中,使很多家长苦恼.爱玩.好动是每个孩子的天性,面对枯燥的文字,缺乏形象化的内容难以引起孩子的学习兴 ...

  6. CodeForces - 1529F It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!(最短路+思维建图)

    题目链接:点击查看 题目大意:给出 nnn 个点(从 000 开始编号)和 mmm 条边的有向带权图,不过 mmm 条边是动态的,经过 ttt 秒后,第 iii 条边就从 ai−>bi,cia_ ...

  7. CodeForces - 1422D Returning Home(最短路+思维建图)

    题目链接:点击查看 题目大意:给出一个 n * n 的二维平面,现在要从点 ( sx , sy ) 到达点 ( fx , fy ),在平面上有 m 个传送门,共有两次操作: 向上.下.左.右移动一个单 ...

  8. ZZULIOJ 2131 Can Win【思维建图+最大流】

    2131: Can Win Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 479  Solved: 61 SubmitStatusWeb Board ...

  9. HDU 4725 层级最短路 思维建图 邻接表 堆优化迪杰斯特拉 真的难想 区域网络赛真题

    题目 题解思路 知道是最短路,怎么建图呢? 一开始想到每层来一个超级源点,但是方向不知道怎么确定,用双向边果然WA了(如果是双向边,那一层的都会变成0费连通了 ). 翻了翻 大佬的博客 大佬定义了一种 ...

  10. 2016 计蒜之道 复赛 菜鸟物流的运输网络【拆点+思维建图+网络流】

    菜鸟物流的运输网络 菜鸟物流有自己的运输网络,网络中包含 nn 个城市物流集散中心,和 mm 对城市之间的运输线路(线路是双向的).菜鸟物流允许淘宝卖家自行确定包裹的运输路径,但只有一条限制规则:不允 ...

最新文章

  1. tensor转换 pytorch tensorflow
  2. C++__min_element()和max_element()函数的使用
  3. ii7+php5.5+phpMyAdmin-4.1.0
  4. IBM技术大会2005
  5. Mysql(三)——(cmd)数据库的命令操作
  6. matlab自带四旋翼算例asbQuadcopter使用心得
  7. 京瓷打印机1025默认管理员密码_京瓷2235默认登录密码_动漫台
  8. Maven的依赖范围
  9. ThinkPHP叫号系统
  10. 常见并发工具的使用和原理解析——Condition(重点在第五节)
  11. 中级软件设计师真题与答案(2009到2018)
  12. 【iOS】—— 获取设备唯一标识
  13. ZYNQ OV7725和OV5640摄像头速度测试
  14. 使用wgd进行全基因组复制分析
  15. 从 三江方士 的 中华级数 想到 数学的界限
  16. Shell while 语法(: 死循环)
  17. 机器视觉之光源基础知识及光源选型
  18. 微信小程序——登陆凭证校验报错{errcode:40029,errmsg:invalid code, hints: [ req_id: weh8ka0297hc58 ]}
  19. python 编码 乱码问题
  20. spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include

热门文章

  1. ⼤规模⽆监督预训练语⾔模型与应⽤(上)
  2. java 添加注解_你知道Java中的package-info的作用吗?
  3. .gitignore文件_Java小白入门,Git忽略文件.gitignore详解
  4. php8vsgo,服务端 I/O 性能:Node、PHP、Java、Go 的对比
  5. threejs对象拾取
  6. python requests 重试_我可以为requests.request设置最大重试次数吗?
  7. mysql group by 慢_mysql“group by”查询非常慢
  8. 如何在CSDN博客中的所贴的代码进行【代码块】显示
  9. Asterisk学习进阶-3
  10. modf函数C语言,C / C ++中的modf()