1 条题解

  • 0
    @ 2025-8-24 21:16:37

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 览遍千秋
    将伤与泪汇成力化作拳

    搬运于2025-08-24 21:16:36,当前版本为作者最后更新于2024-08-21 23:07:26,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Source & Knowledge

    2024 年 8 月语言月赛,由洛谷网校入门计划/基础计划提供。

    考察二维数组、简单构造。


    文字题解

    共有 nn 首歌曲,mm 类题材,容易算出每类题材有 k=nmk=\dfrac{n}{m} 首歌。

    如何得到一个符合题意的序列?首先,我们需要按照题材将歌曲的编号分别存储下来。

    如何存储?我们将利用一个一维数组 w[]w[] 和一个二维数组 s[][]s[][]w[i]w[i] 表示当前第 ii 类题材已经有几首歌曲了,s[i][]s[i][] 用于存储第 ii 类歌曲的编号。

    当输入了第 ii 首歌曲的编号 cic_i,我们需要把编号 ii 归入第 cic_i 类,需要进行以下的操作:

    • cic_i 类的歌曲数目增加 11,也就是 w[ci]w[c_i] 增加 11
    • ii 存入 s[ci][w[ci]]s[c_i][w[c_i]]

    分类存储完后,我们可以按照如下的策略安排播放顺序:

    • 播放第 11 种题材的第 11
    • 播放第 22 种题材的第 11
    • ……
    • 播放第 mm 种题材的第 11
    • 播放第 11 种题材的第 22
    • 播放第 22 种题材的第 22
    • ……
    • 播放第 mm 种题材的第 22
    • ……
    • 播放第 11 种题材的第 kk
    • 播放第 22 种题材的第 kk
    • ……
    • 播放第 mm 种题材的第 kk

    这可以通过按照先列后行对 ss 数组进行遍历完成:

    for(int i = 1; i <= k; i++) {
        for(int j = 1; j <= m; j++) {
            cout << s[j][i] << endl;
        }
    }
    

    视频题解

    • 1

    信息

    ID
    10606
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者