NOIP模擬 德拉曼茲路基

2021-07-22 16:12:25 字數 1492 閱讀 6547

阿良良木曆將要迎來人生(不,是吸血鬼生涯)的第一次戰鬥——與同為吸血鬼的德拉曼茲路基在直江津高中的操場solo,以取回heartunderblade的右腳。

德拉曼茲路基是個2公尺高的彪形大漢,擁有吸血鬼的能力,雙手拿著焰形巨劍(那巨劍似乎是flamberge的一種),所以歷發現直接對抗是不利的。直江津高中是歷熟悉的地方,也就是所謂「地利」,歷看到了體育倉庫,並打算前往那裡尋找**。

可以把操場看成乙個網格圖,歷開始時位於(0,0),倉庫位於(n,m)。對於每一步,假設歷位於(x,y),在德拉曼茲路基的攻擊下,歷只能向下一格(x+1,y),或向右一格(x,y+1)移動,當然他還可以借助吸血鬼的體能,直接跳到(p,q)(p,q自己選定且需滿足p>x,q>y)。

如果歷普通地向下、向右移動超過k步,那麼他會被德拉曼茲路基追上,並且被打斷乙隻手。吸血鬼的再生能力強,四肢是馬上還原的,但是歷不想受這個疼痛,於是他想知道,在不被追上的情況下,有多少種不同的方案可以到達倉庫。歷要求不高,只要知道答案對1000000007取模的答案即可。

比賽的時候,腦子短路沒推出來。比賽後推完式子,去問出題人乙個問題,由於出題人沒有明白問題就否定了我,導致我很久之後才改這道題。

首先可以向右或向下走k步,那麼就列舉向下或向右的步數,然後再用組合數去算跳的步數。

比如說列舉向下向右後走到了(i,j)點,然後現在需要跳。因為行的情況和列的情況互不影響,所以行和列單獨算然後再乘起來就好了。就相當於在(i,j)的右下角的矩陣中跳,那麼列舉跳l次,那麼跳的情況數就是cl

−1n−

i−1∗

cl−1

m−i−

1 因為最後乙個肯定要到最後一行最後一列,那麼i+1~n-1(j+1~n-1)隨意。然後因為向下向右和跳可以交叉的用,那麼再乘上ca

n∗cb

n−a=

n!a!

b!l!

=(a+

b+l)

!a!b

!l! (n表示向右向下跳的總步數,a表示向下步數,b表示向右步數,l表示跳的步數)。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

#define fod(i,a,b) for(i=a;i>=b;i--)

using namespace std;

typedef long long ll;

const int maxn=200007,mo=1000000007;

ll i,j,k,l,t,n,m,ans,a,b,nn,mm;

ll fact[maxn],ni[maxn];

ll c(ll x,ll y)

ll qsm(ll x,ll y)

return z;

}int main()

fo(i,1,l)}}

printf("%lld\n",ans);

}

NOIP模擬 尤拉函式 切蛋糕

題目描述 樣例輸入1 6樣例輸出1 4樣例輸入2 15樣例輸出2 7資料說明 對於30 的資料 2 n 15 對於50 的資料 2 n 1,000 對於70 的資料 2 n 1,000,000 對於100 的資料 2 n 1,000,000,000 題目分析 附 include include in...

《高德拉特約束理論》

1 toc是 theory of constraints 的縮寫,可譯為約束理論 制約理論 瓶頸理論 限制理論等。toc是通過對 約束條件 的持續性改善來提公升系統表現的一種理論。2 toc的關鍵概念是 五大核心步驟 1 找出系統約束條件 2 挖進約束條件的潛能 3 使非約束條件服從約束條件 4 提...

NOIp2019模擬 荷馬史詩(哈夫曼樹)

傳送門 noi noino i那道的加強版 實際也比較簡單 考慮每次排序後加入的就是一段連續的區間 提前排序之後維護一下當前新出現的節點的權值 每次暴力比一下新出現的這次會不會加進去 複雜度是調和級數的o n logn o nlogn o nlog n include using namespace...