T1
题目大意
网格图,点权
x[i,j]=x[i−1,j]+x[i,j−1]且x[0,j]=x[i,0]=1
求
(0,0)到(n,m)
路径上的的最小点权和
题解
假设
n<=m
,如果不是先交换
最短明显是先走
m
,再走
然后就是加速计算了,
x[i,j]=x[i−1,j]+x[i,j−1]
我们很容易想到杨辉三角,所以就是求
m+1+∑ni=1Cim+i
然后
Cim+i=Ci−1m+i−1∗m+ii
,除以
i
<script id="MathJax-Element-583" type="math/tex">i</script>用逆原处理即可
var
i,j,k:longint;
n,m,a,b,c,t,ans:int64;
function f(a,b,c:int64):int64; {a^b%c}
var t,y:int64;
begin
t:=1; y:=a;
while b<>0 do
begin
if (b and 1)<>0 then t:=(t*y)mod c;
y:=(y*y)mod c;
b:=b>>1;
end;
exit(t);
end;
begin
readln(n,m); if n>m then begin a:=n; n:=m; m:=a; end;
ans:=m+1; t:=1000000007; a:=1;
for i:=1 to n do
begin
b:=f(i,t-2,t);
a:=(((a*(m+i))mod t)*b)mod t;
ans:=(ans+a)mod t;
end;
writeln(ans);
end.