码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 1327E - Count The Blocks (dp)

时间:2020-04-29 23:09:27      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:cin   type   ORC   --   def   sum   就是   namespace   with   

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 ‘\n‘
#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)

标签:cin   type   ORC   --   def   sum   就是   namespace   with   

原文地址:https://www.cnblogs.com/limil/p/12805627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!