列舉不合法點的思想。
把障礙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#includeview code#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]);
}
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 表示棋盤的行和列,還有不能走的格仔的數目。接下來...