Educational cf 160的B题

Problem - B - Codeforces

找到最小操作次数,使得子串对应位与原来字符串对应位不相同。

交换是没有代价的,但是删除有代价。

首先复制两个一模一样的串,我们把下面作为固定串,然后对串中0和1的个数进行计数,由于我们最终的子串是向左对齐并依次与原串相反的,所以我们不妨从固定串的右边删起。先看下图

也就是说我们只需要删到固定串的0小于等于原串1的个数且固定串的1的个数小于原串0的个数,此时固定串的长度就是我们要找的长度,再用原串长度减去固定串的长度即可。

下面是代码

using i64 = long long;

void solve() {
    std::string s;
    std::cin >> s;

    std::array<int, 2> cnt{};
    for (auto x : s) {
        cnt[x - '0'] += 1;
    }
    int n = s.size();
    int ans = n;
    auto cur = cnt;
    for (int i = n - 1; i >= 0; i--) {
        if (cur[0] <= cnt[1] && cur[1] <= cnt[0]) {
            ans = n - 1 - i;
            break;
        }
        cur[s[i] - '0'] -= 1;
    }
    std::cout << ans << "\n";
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t;
    std::cin >> t;

    while (t--) {
        solve();
    }

    return 0;
}

 

相关推荐

  1. 【算法100. 相同

    2023-12-31 12:22:02       46 阅读
  2. FPGA 8b10b编码。

    2023-12-31 12:22:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 12:22:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 12:22:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 12:22:02       87 阅读
  4. Python语言-面向对象

    2023-12-31 12:22:02       96 阅读

热门阅读

  1. 游泳技巧总结

    2023-12-31 12:22:02       54 阅读
  2. WSL2Linux 子系统(七)

    2023-12-31 12:22:02       56 阅读
  3. C++之std::decay

    2023-12-31 12:22:02       51 阅读
  4. 带着思考与突破前行

    2023-12-31 12:22:02       53 阅读
  5. Keras 3.0发布:全面拥抱 PyTorch

    2023-12-31 12:22:02       55 阅读
  6. 【微服务核心笔记】

    2023-12-31 12:22:02       53 阅读
  7. GO语言基础笔记(六):接口interface

    2023-12-31 12:22:02       41 阅读
  8. C++Day3

    C++Day3

    2023-12-31 12:22:02      58 阅读