zoukankan      html  css  js  c++  java
  • [CF451D] Count Good Substrings

    [CF451D] Count Good Substrings

    Description

    一个字符串是“好的”,当且仅当合并其中的相同连续区间后,它是一个回文串。给你一个字符串,只有 a,b 两种字符,现在要你分别求出长度为奇数和偶数的“好的”子串数量。

    Solution

    由于只有两种字符,一个串是好的,当且仅当它开头结尾字符相同

    问题转化为,求开头结尾字符相同的,长度为奇数或者偶数的串的数量

    也就是,求相同字符,间距为奇数或偶数的点对的数量

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    signed main()
    {
        ios::sync_with_stdio(false);
        string s;
        cin >> s;
        int n = s.length();
        int c[2][2] = {{0, 0}, {0, 0}};
        for (int i = 0; i < n; i++)
            c[i & 1][s[i] & 1]++;
        int even = (c[0][0] * c[1][0] + c[0][1] * c[1][1]);
        int odd = c[0][0] * (c[0][0] + 1) / 2 + c[1][1] * (c[1][1] + 1) / 2 +
                  c[0][1] * (c[0][1] + 1) / 2 + c[1][0] * (c[1][0] + 1) / 2;
        cout << even << " " << odd;
    }
    
  • 相关阅读:
    SpringMVC
    SpringMVC
    SpringMVC
    Spring
    Spring
    值类型和引用类型
    判断字符串的开头和结尾
    二分法(课后)
    验证码
    从1-36中随机出6个不相等的数
  • 原文地址:https://www.cnblogs.com/mollnn/p/14449184.html
Copyright © 2011-2022 走看看