1 条题解

  • 0
    @ 2025-8-25 18:39:43

    O(N2)O(N²)

    1. 循环移位的影响

      • 操作 1 相当于循环移位,进行 k 次操作 1 相当于将字符串循环左移 k 次
      • 我们可以枚举所有可能的移位次数 k( 0 ≤ k < N )
    2. 回文串检查

      • 对于每个移位后的字符串,检查使其成为回文串所需的修改次数
      • 每对不对称的字符需要至少修改一次(花费B元)
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        long long n, a, b, mi = 1e18; // 初始化最小花费为极大值
        string s;
        cin >> n >> a >> b; // 输入字符串长度和操作成本
        cin >> s; // 输入原始字符串
        s += s; // 复制字符串,便于处理循环移位
        
        // 枚举所有可能的移位次数i
        for(int i = 0; i < n; ++i){ 
            int l = i, r = i + n - 1; // 当前移位后字符串的左右边界
            long long sum = a * i; // 移位成本
            
            // 双指针法检查回文并计算修改成本
            while(l < r){
                if(s[l] != s[r]) sum += b; // 对称位置字符不同,需要修改
                l++;
                r--;
            }
            
            mi = min(mi, sum); // 更新最小花费
        } 
        
        cout << mi; // 输出结果
        return 0;
    }
    
    • 1

    信息

    ID
    576
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者