顺丰8-29号 数据分析 笔试编程大题
原题在这。
就AC掉64%
能想到比较简单的是,假设每个人最多会一种的情况下。
1、不同语言之间只要一个学习机即可让两批人都能交流,剩下一个语言都不会的,每人一个学习机即可。基于此。程序如下。
import sys line = sys.stdin.readline().strip() nmk = list(map(int, line.split())) n = nmk[0] m = nmk[1] k = nmk[2] lang = {} ans = 0 for i in range(k): line = sys.stdin.readline().strip() uv = list(map(int,line.split())) u = int(uv[0]) v = int(uv[1]) if v not in lang.keys(): lang[v] = 1 else: lang[v] += 1 ans = len(lang.keys()) - 1 ans += n - sum(lang.values()) print(ans)2、此外 ,一个人会多种语言的情况,这个情况下再细分为两种。
- 会多种语言的人之间没有重复的语言,例如1 会 AB 语言,2会CD语言。那么就可以在一的情况中减少两个学习机,这个时候可以把AB、CD分别看成一个整体。两个整体之间就只需要一个学习机即可
- 会多种语言的人之前有重复的语言, 例如1会AB,2会BC,或者1会ABC ,2会BCD 此时减去重复语言个数数量的学习机
临界情况是想到了。但是写不出来。痛苦,有没有大神提供下思路。求解