動的計画 - 牛の数と、より多くの乗客学校

動的計画 - 牛の数と、より多くの乗客学校

問題の意味:文字列300に部分文字列の数を数えることは割り切れることができ

アイデア:3で割り切れる数、あなたと3で割り切れます。0以外の数によって3%の番号の前に「00」プレフィックスを含む演算子は、可能な数300で割り切れます

LL a[5];
int main()
{
    string s;cin >> s;
    int len = s.size();
    LL sum = 0, ans = 0;
    a[0] = 1;
    for(int i = 0;i < len;++i)
    {
        if(s[i] == '0' && s[i+1] == '0')
            ans += a[sum];
        sum = (sum+s[i]+'0')%3;
        a[sum]++;
    }
    for(int i = 0;i < len;++i)
        if(s[i] == '0') ans++;
    cout << ans << endl;
    return 0;
}

おすすめ

転載: www.cnblogs.com/shuizhidao/p/11258565.html