1 条题解

  • 0
    @ 2025-8-24 21:14:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

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

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

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察了字符串函数和 C++ STL 中集合(set)的应用。

    首先我们根据题意,使用题目中对 RiR_i 的生成方式,生成 RiR_i。接着根据 Rimod4R_i \bmod 4 的值为 0,1,2,30,1,2,3 时分别为 A,T,C,G\tt{A,T,C,G} 这一句话,我们生成得到字符串 ss

    基因组字符串到手后,下一步是提取所有长度为 kk 的字符串。这里可以使用 substr 函数,使用方式是 string l = s.substr(i, k),指的是从下标 ii 开始截取长度为 kk 的字符串,放入变量 ll 中。

    接着,由于题目中说到要统计有多少个不同的字符串,C++ 的 set 容器成了我们的好帮手。set 会自动去重,每次插入一个子串,它只保留唯一值。因此我们只要把截取的子串放入 set 中,最后输出集合大小即可。

    参考代码(只展示关键部分):

    for (int i = 0; i < s.size() - k + 1; i++) {
        l = s.substr(i, k);
        set_gs.insert(l);
    }
    cout << set_gs.size() << endl;
    
    • 1

    信息

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