我哭了 模數居然是1e8+7。。。。。。也好 長個記性
第i第(i+1)個數之間的差記為di di對整個序列和的貢獻是di*(n-i) 先假設首項為0 看怎麼用這(n-1)個相鄰差組成的數湊出s%n 因為相鄰兩項差確定之後 只剩首項不確定 首項e1對序列和的貢獻是e1*n 所以只要保證s減去相鄰差組成的數是n的倍數即可
然後每兩個相鄰位置都提供ai*(n-i) -1*bi*(n-i)這兩種物品 容量為n 按揹包處理一下即可
#include using namespace std;
typedef long long ll;
const ll mod=1e8+7;
const int maxn=1e3+10;
ll dp[2][maxn];
ll s,n,a,b,m;
int main()
for(j=0;j}
printf("%lld\n",dp[(n-1)%2][m]);
return 0;
}
波動數列 藍橋杯
這是2014年第五屆藍橋杯全國軟體大賽預賽本科a組 c c 組 第10題,也就是最後一題。思路可以想得到,列舉和廣度優先搜尋,由於最後時間緊迫,簡單的計數還沒完成,謹以此文祭奠逝去的藍橋杯。剛看這題,似乎摸不著頭腦,細細欣賞,似乎還可以實現。由於資料量可能很大,這裡使用了long long型別。輸入...
藍橋杯 波動數列
問題描述 觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加a或者減少b的整數數列可能有多少種呢?輸入格式 輸入的第一行包含四個整數 n s a b,含義如前面說述。輸出格式 輸出一行...
波動數列 藍橋杯
資料格式 輸入的第一行包含四個整數 n s a b,含義如前面說述。輸出一行,包含乙個整數,表示滿足條件的方案數。由於這個數很大,請輸出方案數除以100000007的餘數。例如,輸入 4 10 2 3 程式應該輸出 2 樣例說明 這兩個數列分別是2 4 1 3和7 4 1 2。資料規模與約定 對於1...