Niuke: el movimiento de 01 cuerdas de Xiaomi

El giro de 01 cuerdas de Xiaomi
Insertar descripción de la imagen aquí

#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;
}

Supongo que te gusta

Origin blog.csdn.net/congfen214/article/details/132850934
Recomendado
Clasificación