CF1090C.New Year Presents
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
圣诞老人已经为 n 个孩子准备好了装有礼物的盒子,每个孩子一个盒子。有 m 种不同的礼物:气球、糖果、巧克力棒、玩具车……每个孩子如果收到两个相同种类的礼物会感到失望,因此每个盒子里的礼物种类都必须各不相同。
在打包完所有礼物后,圣诞老人发现不同的盒子里礼物的数量可能不同。这样对孩子们来说不公平,于是他决定在盒子之间移动一些礼物,使得每个盒子里的礼物数量尽量接近。所有移动完成后,任意盒子中礼物数量的最大值与最小值之差应尽可能小。每个盒子中的礼物种类仍需各不相同。圣诞老人希望尽快完成这项工作,因此他想让所需移动的次数尽量少。
给定每个盒子中礼物的种类,请找出一种最短的移动方案,使得所有盒子中礼物数量的最大值与最小值之差不超过 1,并且每个盒子中的礼物种类各不相同。
输入格式
输入的第一行包含两个整数 n 和 m(1≤n,m≤100000),分别表示盒子的数量和礼物种类的数量。礼物用 1 到 m 的整数表示。
接下来的 n 行,每行描述一个盒子。每行以一个整数 si(si≥0)开头,表示该盒子中礼物的数量,接下来是 si 个不同的整数,表示该盒子中礼物的种类,范围为 1 到 m。
所有盒子中的礼物总数不超过 500000。
输出格式
输出的第一行包含一个整数 k,表示最短移动序列的步数,使得所有盒子中礼物数量的最大值与最小值之差不超过 1。接下来的 k 行,每行描述一次移动,包含三个整数 fromi、toi、kindi,表示将编号为 fromi 的盒子中的 kindi 号礼物移动到编号为 toi 的盒子中。盒子的编号按照输入顺序从 1 开始。
在每次移动时,fromi 盒子中必须有 kindi 号礼物。所有移动完成后,每个盒子中不能有两个相同种类的礼物。
如果有多种最优方案,输出任意一种即可。
输入输出样例
输入#1
3 5 5 1 2 3 4 5 2 1 2 2 3 4
输出#1
2 1 3 5 1 2 3
说明/提示
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?