HDU 1121 - Complete the Sequence (差分递推规律)

题意

找后面的k像,要求degree越小越好。

思路

完全没有思路。看了别人的题解才知道还有这么神奇的东西。

对给出的数组做n-1阶的差,最后得出一个常数。然后逆推就行了(作者原话)。
然后我就对着逆推想了半天。果然是智商压制。

算是了解了一种新的题型吧。

代码

int dp[MAXN][MAXN];
 
int main()
{
    //ROP;
    int T;
    scanf("%d", &T);
    while (T--)
    {
        int n, k;
        scanf("%d%d", &n, &k);
        for (int i = 1; i <= n; i++) scanf("%d", &dp[0][i]);
        for (int i = 1; i < n; i++)
            for (int j = 1; i+j <= n; j++) dp[i][j] = dp[i-1][j+1] - dp[i-1][j];
        for (int i = 2; i <= k+1; i++) dp[n-1][i] = dp[n-1][1];
        for (int i = n-2; i >= 0; i--)
            for (int j = n-i; j <= n+k; j++) dp[i][j] = dp[i+1][j-1] + dp[i][j-1];
        for (int i = n+1; i < n+k; i++) printf("%d ", dp[0][i]);
        printf("%d\n", dp[0][n+k]);
    }
    return 0;
}

Powered by Jekyll and Theme by solid