1486 大大走格仔
基準時間限制:1 秒 空間限制:131072 kb
有乙個h行w列的棋盤,裡面有一些格仔是不能走的,現在要求從左上角走到右下角的方案數。
input
單組測試資料。output第一行有三個整數h, w, n(1 ≤ h, w ≤ 10^5, 1 ≤ n ≤ 2000),表示棋盤的行和列,還有不能走的格仔的數目。
接下來n行描述格仔,第i行有兩個整數ri, ci (1 ≤ ri ≤ h, 1 ≤ ci ≤ w),表示格仔所在的行和列。
輸入保證起點和終點不會有不能走的格仔。
輸出答案對1000000007取餘的結果。input示例
3 4 2output示例2 22 3
2
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8view codeusing
namespace
std;
9 typedef long
long
ll;10 typedef long
double
ld;11 typedef pairpr;
12const
double pi=acos(-1
);13
#define rep(i,a,n) for(int i=a;i<=n;i++)
14#define per(i,n,a) for(int i=n;i>=a;i--)
15#define rep(i,u) for(int i=head[u];i;i=next[i])
16#define clr(a) memset(a,0,sizeof(a))
17#define pb push_back
18#define mp make_pair
19#define fi first
20#define sc second
21#define pq priority_queue
22#define pqb priority_queue , less>
23#define pqs priority_queue , greater>
24#define vec vector
25 ld eps=1e-9
;26 ll pp=1000000007
;27 ll mo(ll a,ll pp)
28 ll powmod(ll a,ll b,ll pp)
29void fre()
30//
void add(int x,int y,int z)
31int dx[5]=,dy[5]=;
32 ll read()
37const
int n=200005
;38 ll fac[n],inv[n],dp[2005
];39
struct
nodef[2005
];42
bool
cmp(node a,node b)
45 inline ll c(int m,int
n)49
intmain()
57 sort(f+1,f+n+1
,cmp);
58 ll ans=c(h-1,h-1+w-1
);59
for (int i=1;i<=n;i++)65}
66 ans=mo(ans-mo(dp[i]*c(h-f[i].r,h-f[i].r+w-f[i].c),pp),pp);67}
68 printf("
%lld
",ans);
69return0;
70 }
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 大大走格仔 容斥
題目 對於每個點,求出從起點到它,不經過其他障礙點的方案數 求乙個點時,首先得到走到它的所有方案,減去 x y 都小於它的點的方案 走到該點的方案數 由於該點的方案也不包括其它障礙點,所以就是容斥。如下 include include include include using namespace ...