AcWing 1214 波動數列(推柿子 DP)

2022-05-26 21:03:10 字數 1111 閱讀 8994

觀察這個數列:

1 3 0 2 -1 1 -2 …

這個數列中後一項總是比前一項增加2或者減少3,且每一項都為整數

棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加 a 或者減少 b 的整數數列可能有多少種呢?

輸入格式

共一行,包含四個整數 n,s,a,b,含義如前面所述。

輸出格式

共一行,包含乙個整數,表示滿足條件的方案數。

由於這個數很大,請輸出方案數除以 100000007 的餘數。

資料範圍

1≤n≤1000,

−109≤s≤109,

1≤a,b≤106

輸入樣例:

4 10 2 3
輸出樣例:
2
樣例解釋

兩個滿足條件的數列分別是2 4 1 3和7 4 1 -2。

沒想到模同餘==

放個比較詳細的題解

注意get_mod能防止負數取模,同時模數是1e8+7!

#include #define mod 1000000007

using namespace std;

int n, s, a, b;

int dp[1005][1005] = ;

//x x + p1 x + p1 + p2 x + p1 + p2 + p3 ... x + p1 + p2 + p3 +...+p(n-1)

//n * x + (n - 1) * p1 + (n - 2) * p2 + .... + 1 * p(n - 1) = s

//s - ((n - 1) * p1 + (n - 2) * p2 + .... + 1 * p(n - 1)) = n * x

//(s - ((n - 1) * p1 + (n - 2) * p2 + .... + 1 * p(n - 1))) / x = n

int get_mod(int a, int b)

int main()

}cout << dp[n - 1][get_mod(s, n)];

return 0;

}

AcWing 1214 波動數列

觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3,且每一項都為整數。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加 a 或者減少 b 的整數數列可能有多少種呢?輸入格式 共一行,包含四個整數 n,s,a,b,含義如前面所述。輸出格...

波動數列 藍橋杯

這是2014年第五屆藍橋杯全國軟體大賽預賽本科a組 c c 組 第10題,也就是最後一題。思路可以想得到,列舉和廣度優先搜尋,由於最後時間緊迫,簡單的計數還沒完成,謹以此文祭奠逝去的藍橋杯。剛看這題,似乎摸不著頭腦,細細欣賞,似乎還可以實現。由於資料量可能很大,這裡使用了long long型別。輸入...

藍橋杯 波動數列

問題描述 觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加a或者減少b的整數數列可能有多少種呢?輸入格式 輸入的第一行包含四個整數 n s a b,含義如前面說述。輸出格式 輸出一行...