当前位置:网站首页>2327. 知道秘密的人数(递推)

2327. 知道秘密的人数(递推)

2022-07-06 04:11:00 Harris-H

2327. 知道秘密的人数(递推)

一维dp就可以qwq。令 f i f_i fi表示第 i i i天新知道秘密的人数。

i i i天可以由 ( i − f o r g e t , i − d e l a y ] (i-forget,i-delay] (iforget,idelay] 递推。

显然可以预处理前缀和,做到 O ( n ) O(n) O(n)

最后的答案就是: ∑ i = n − f o r g e t + 1 n f i \sum\limits_{i=n-forget+1}^n f_i i=nforget+1nfi

class Solution {
    
    const int MOD = 1000000007;

public:
    int peopleAwareOfSecret(int n, int delay, int forget) {
    
        vector<long long> f(n + 1), g(n + 1);
        f[1] = g[1] = 1;
        for (int i = 2; i <= n; i++) {
    
            int L = max(0, i - forget);
            int R = max(0, i - delay);
            f[i] = (g[R] - g[L] + MOD) % MOD;
            g[i] = (g[i - 1] + f[i]) % MOD;
        }
        return (g[n] - g[max(0, n - forget)] + MOD) % MOD;
    }
};
原网站

版权声明
本文为[Harris-H]所创,转载请带上原文链接,感谢
https://harris.blog.csdn.net/article/details/125597327