汕頭市選2012初中組 數數 count

2021-10-05 21:37:09 字數 1726 閱讀 4982

題目描述

ftiasch 開發了乙個奇怪的遊戲,這個遊戲的是這樣的:乙個長方形,被分成n 行m 列的格仔,第i 行第j 列的格仔記為(i, j),就是說,左上角的格仔是(1,1),右下角的格仔是(n,m)。開始的時候,nm 在(1,1),他需要走到(n,m)。每一步,nm 可以走到正右方或者正下方的乙個格仔。具體地說,如果nm 現在在(x, y),那麼他可以走到(x,y + 1) 或(x + 1,y)。當然,nm 不能走出離開這個長方形。

每個格仔有積分,用乙個1—10 的整數表示。經過這個格仔,就會獲取這個格仔的積分(起點和終點的積分也計算)。通過的方法是:到達(n,m) 的時候,積分恰好為p。

現在給出這個長方形每個格仔的積分,你需要幫助nm,求出從起點走到終點,積分為p的線路有多少條。

輸入

第1 行,3 個整數n, m, p。接下來n 行,每行m 個整數aij,表示格仔(i, j) 的積分。

輸出

1 行,1 個整數,表示積分為p 線路的數量。因為數值太大,你只需要輸出結果除以(10^9 +7) 的餘數。

樣例輸入

3 3 9

2 2 1

2 2 2

1 2 2

樣例輸出2

資料範圍限制

對於50% 的資料,1<= n,m<=10。

對於100% 的資料,1<=n,m<=100,0 <= aij<=10。

俗話說暴力出奇蹟

,這道題其實就是簡單的

dp,我們設a[i][j]為(i,j)的積分,dp[i][j][p]表示走到(i,j)時,積分恰好為p的方案數。

第一步:找dp式

作文開頭難,寫好開頭成一半。動態規劃式就是dp演算法的核心,如果要用動態規劃,寫好了動態規劃式,也就已經有了一半了。但正因如此,動態規劃式是整個演算法裡最難,也是最難理解的部分。

因為nm可以走到正右方或者正下方的乙個格仔,所以每乙個格仔的路徑數取決於它上面的格仔和左邊的格仔,nm從上面的格仔和左邊的格仔到達當前格仔都行,所以dp式為

第二步:實現

我們設dp[1][1][a[1][1]]初值為1,因為從起點出發到起點,分值為起點的積分數(起點和終點的積分也計算)只有一種方案,然後我們for(int i=1;i<=n;i++) for(int j=1;j<=m;j++),說人話就是從左到右、從上到下遍歷,為什麼一定要醬紫?因為每乙個格仔的路徑數取決於它上面的格仔和左邊的格仔,所以一定要保證乙個格仔計算之前,它上面的格仔和左邊的格仔已經計算了(當然,如果一列列遍歷也行,但過於繁瑣

)。然後再遍歷每一種分數for(ints=a[i][j]+1;s<=p;s++)這裡一定要s=a[i][j]+1,因為等一下s還要減去a[i][j]的,你當前的分數不可能比這個格仔的分數還低或等於它吧,那難道走到這個格仔前分數還是負數或0?

最後:注意事項

要記得把答案模10^9+7,但不是最後才模,不然可能還沒有模就已經爆掉了,要在計算的時候,也就是

排序 汕頭市選2012初中組 排序 sort

題目描述 ftiasch和nm是好朋友。nm的成績很差,以至於gpa 平均績點 在系內倒數。系內一共有n位 同學,每位同學有自己的gpa,以及已修學分數,定義gpt gpa已修學分數。ftiasch為了幫助 nm提高成績,給nm提了乙個要求 新學期的gpa要超過系內排名第k 位的同學。現在給出系裡面...

陣列 汕頭市選2012初中組 求和 sum

題目描述 ftiasch 有很多糖果,分成了n 堆,排成一列。ftiasch 說,如果nm 能迅速求出第l 堆到第r 堆一 共有多少糖果,就把這些糖果都給他。現在給出每堆糖果的數量,以及每次詢問的l 和r,你需要幫助nm,把每次詢問的結果求出來。注意,你不需要考慮糖果被nm 取走的情況。輸入 第1 ...

汕頭市選 2014 舞伴

n 個男孩,n 個女孩,男孩和女孩可能是朋友,也可能不是朋友。現在要組成n 對舞伴,要求每對 伴都是一男一女,且他們是朋友。統計不同配對方案的數量,因為結果很大,所以只要求除以m 的餘數。對於50 的資料,n 9 對於100 的資料,1 n 20,1 m 10 9 0 aij 1。這題觀察資料不難發...