Codeforces 1327E - Count The Blocks (dp)

Posted limil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1327E - Count The Blocks (dp)相关的知识,希望对你有一定的参考价值。

Description

思路

当总长为n,block长度为k时,把k看成一个整体,那么求k的个数相当于求总长为n-k+1时,block长度为1的个数。
假设dp[n]代表的是总长为n中block长度为1的个数。我们要求的就是这个dp 1到n的值。
求block长度为1的个数,就是把总的情况数,减去长度为2, 3 ... n的个数。而这里的长度为2, 3, ...的个数,就是2 * dp[n-1], 3 * dp[n - 2]...。

#include <bits/stdc++.h>
 
using namespace std;
const int N = 3e5 + 10;
typedef long long ll;
#define endl ‘
‘
#define inf 0x3f3f3f3f
const int M = 998244353;
 
 
ll dp[N];
 
int main() {
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    dp[1] = 10;
    dp[2] = 180;
    if(n > 2) {
        ll tot = dp[1] * 2 + dp[2];
        ll sum = dp[1] + dp[2];
        ll all = 100;
        for(int i = 3; i <= n; i++) {
            all = (all * 10) % M;
            tot = (tot + sum) % M;
            dp[i] = ((all * i - tot) % M + M) % M;
            sum = (sum + dp[i]) % M;
            tot = (tot + dp[i]) % M;
        }
    }
    for(int i = n; i >= 1; i--) cout << dp[i] << " ";
 
}

以上是关于Codeforces 1327E - Count The Blocks (dp)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 258D Count Good Substrings

Codeforces 1327 E. Count The Blocks

Codeforces 1312D. Count the Arrays

CodeForces - 1189 E.Count Pairs (数学)

Codeforces 1000C Covered Points Count

Codeforces1355E Guess Divisors Count