小美的01串翻转
 
#include<iostream>
#include<cstring>
#include<string>
#include<vector>
using namespace std;
typedef long long ll;
const int N = 1100;
string s;
ll res = 0;
int main()
{
    cin>>s;
    
    int n = s.size();
    vector<vector<int>> dp(n,vector<int>(2));
    
     for (int i = 0; i < n; i++) 
     {
        for (int j = i; j < n; j++) 
        {
            if (j == i) 
            {
                if (s[j] == '0') 
                {
                    dp[j] = {0,1};
                }
                else
                {
                    dp[j] = {1,0};
                }
            }
            else
            {
                if (s[j] == '0') 
                {
                    dp[j][0] = dp[j-1][1];
                    dp[j][1] = dp[j-1][0] + 1;
                }
                else 
                {
                    dp[j][0] = dp[j-1][1] + 1;
                    dp[j][1] = dp[j-1][0];
                }
            }
            res += min(dp[j][0], dp[j][1]);
        }
    }
    cout << res << endl;
    
    return 0;
}
                


















