1 solutions

  • 0
    @ 2025-6-10 22:04:44

    最大值一定出现在移位0250-25次内 遍历所有可能的移位 kk002525):对于每个 kk,计算字符串中每个字符移位后的洞数之和。 计算每个 kk 的总和:利用模运算快速得到移位后的字母索引,累加洞数。 更新最大值:记录所有k k 中最大的总和。

    #include <iostream>
    #include <string>
    using namespace std;
    
    int hole[26] = {
        1,2,0,1,0,0,0,0,0,0,0,0,0,
        0,1,1,1,1,0,0,0,0,0,0,0,0
    };
    
    int main() {
        string s;
        cin >> s;
        int max_sum = 0;
        for (int k = 0; k < 26; ++k) {
            int sum = 0;
            for (char c : s) {
                int idx = (c - 'A' + k) % 26;
                sum += hole[idx];
            }
            if (sum > max_sum) {
                max_sum = sum;
            }
        }
        cout << max_sum << endl;
        return 0;
    }
    

    Information

    ID
    1500
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    (None)
    # Submissions
    58
    Accepted
    19
    Uploaded By