欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1950G.Shuffling Songs
Shuffling Songs
题目描述
Vladislav 有一个由 首歌组成的播放列表,编号从 到 。歌曲 属于流派 并由作者 创作。他希望以这样一种方式制作播放列表:每对相邻的歌曲要么有相同的作者,要么属于相同的流派(或两者兼有)。他称这样的播放列表为激动人心的。 和 都是长度不超过 的字符串。
但是有可能不总是能使用所有歌曲制作出激动人心的播放列表,因此洗牌过程分为两步。首先,移除一些数量(可能为零)的歌曲,然后重新排列剩余的歌曲使播放列表激动人心。
由于 Vladislav 不喜欢从他的播放列表中移除歌曲,他希望尽可能少地进行移除。帮助他找出为了能重新排列剩余歌曲使播放列表激动人心而需要进行的最少移除数量。
输入格式
输入的第一行包含一个整数 () ——表示多少组数据。
每个测试用例的第一行包含一个单独的整数 表示原始播放列表中的歌曲数量。
接着是 行,第 行包含两个由小写字母组成的字符串 和 ——第 首歌的流派和作者。其中 和 是字符串的长度。
所有测试用例中 的总和不超过 。
所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一个整数,为使得结果的播放列表可以激动人心所必需的最少移除数量。
样例
4
1
pop taylorswift
4
electronic themotans
electronic carlasdreams
pop themotans
pop irinarimes
7
rap eminem
rap drdre
rap kanyewest
pop taylorswift
indierock arcticmonkeys
indierock arcticmonkeys
punkrock theoffspring
4
a b
c d
e f
g h
0
0
4
3
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |