zoukankan      html  css  js  c++  java
  • Codeforces Round #656 (Div. 3) D. a-Good String

    题目链接:https://codeforces.com/contest/1385/problem/D

    题意

    一个小写字母串称为 $c-good string$,如果至少满足以下条件之一:

    • 字符串长度为 $1$,包含字母 $c$
    • 字符串前一半都为字母 $c$,后一半为 $(c+1)-good string$ 
    • 字符串后一半都为字母 $c$,前一半为 $(c+1)-good string$ 

    计算将一个长为 $n = 2^k$ 的小写字母串变为 $a-good string$ 至少需要替换多少个字符。

    题解

    递归枚举所有情况即可。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int n;
    string s;
    
    int dfs(int l, int r, char c) {
        if (l + 1 == r) return s[l] != c;
        int l1 = l, r1 = l + (r - l) / 2;
        int cnt1 = r1 - l1 - count(s.begin() + l1, s.begin() + r1, c);
        int l2 = l + (r - l) / 2, r2 = r;
        int cnt2 = r2 - l2 - count(s.begin() + l2, s.begin() + r2, c);
        return min(cnt1 + dfs(l2, r2, c + 1), cnt2 + dfs(l1, r1, c + 1));
    }
    
    void solve() {
        cin >> n >> s;
        cout << dfs(0, n, 'a') << "
    ";
    }
    
    int main() {
        int t; cin >> t;
        while (t--) solve();
    }
  • 相关阅读:
    每日一题
    每日一题
    每日一题
    每日一题
    GitLab 部署
    Golang Web开发之Gin入门
    Golang消息队列之NSQ
    Golang操作Redis
    Golang操作MySQL
    Golang Json数据处理方法
  • 原文地址:https://www.cnblogs.com/Kanoon/p/13334275.html
Copyright © 2011-2022 走看看