51nod 1486 大大走格仔(DP 組合數學)

2022-05-12 16:31:58 字數 656 閱讀 2298

列舉不合法點的思想。

把障礙x座標為第一關鍵字,y座標為第二關鍵字排序。f[i]表示走到第i個障礙的方案數。

f[i]=c(x[i]+y[i]-2,x[i]-1)-sigma(f[j]*c(x[i]-x[j]+y[i]-y[j],x[i]-x[j]));

然後把終點當成障礙加進去,f[n]為答案。

#include#include

#include

#include

#include

#define mod(x) x>=mod?x-mod:x

using

namespace

std;

const

int maxn=500010,mod=1e9+7

;struct poia[maxn];

inth,w,n;

intfac[maxn],f[maxn],inv[maxn];

void read(int &k)

bool cmp(poi a,poi b)

int power(int a,int

b)int c(int n,int m)

intmain()

printf(

"%d\n

",f[n]);

}

view code

51nod 1486 大大走格仔

1486 大大走格仔 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 160 難度 6級演算法題 有乙個h行w列的棋盤,裡面有一些格仔是不能走的,現在要求從左上角走到右下角的方案數。input 單組測試資料。第一行有三個整數h,w,n 1 h,w 10 5,1 n 2...

51nod 1486 大大走格仔

sol 考慮沒有障礙的情況,從 1,1 到 n,m 答案可直接算出為 可得到遞推式 code include include include include include include include include include include using namespace std typ...

51nod 1486 大大走格仔

1486 大大走格仔 基準時間限制 1 秒 空間限制 131072 kb 有乙個h行w列的棋盤,裡面有一些格仔是不能走的,現在要求從左上角走到右下角的方案數。input 單組測試資料。第一行有三個整數h,w,n 1 h,w 10 5,1 n 2000 表示棋盤的行和列,還有不能走的格仔的數目。接下來...