https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417

假设有i步选择不动,就有n-i步移动

假设其中又有a步选择往右移,就有n-i-a步左移

所以-m<=a-(n-i-a)<=m

所以(n-m-i)/2<=a<=min{ n-i,(n+m-i)/2 }

令g(i)=Σ C(n-i,a)(3^a)(2^(n-i-a))

答案=Σ C(n,i)g[i]

考虑如何递推求出g[i]

令f(n,m)=C(n,m)(3^m)(2^(n-m))

则3f(n-1,m-1)+2f(n-1,m)=f(n,m)

假设n=8,m=3

g[0]=                          f(8,3)+  f(8,4)+  f(8,5)

=            3f(7,2)+5f(7,3)+5f(7,4)+2f(7,5)

g[1]=              f(7,2)+  f(7,3)+  f(7,4)+  f(7,5)

=3f(6,1)+5f(6,2)+5f(6,3)+5f(6,4)+2f(6,5)

g[2]=              f(6,2)+  f(6,3)+  f(6,4)

=3f(5,1)+5f(5,2)+5f(5,3)+2f(5,4)

g[3]=  f(5,1)+  f(5,2)+  f(5,3)+  f(5,4)

可以发现,如果已知g[i],那么将g[i]乘5,然后在搞一搞头尾就可以

)#include<cstdio>
#include<algorithm> using namespace std; #define N 3000001 const int mod=; typedef long long LL; int g[N];
int pow2[N],pow3[N],fac[N],inv[N]; int C(int n,int m)
{
return 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod;
} int f(int n,int m)
{
return 1ll*C(n,m)*pow3[m]%mod*pow2[n-m]%mod;
} int pow(int n,int m)
{
int s=;
for(;m;m>>=,n=1ll*n*n%mod)
if(m&) s=1ll*s*n%mod;
return s;
} int main()
{
int n,m;
scanf("%d%d",&n,&m);
pow2[]=;
pow3[]=;
fac[]=;
inv[]=;
for(int i=;i<N;++i)
{
pow2[i]=pow2[i-]*%mod;
pow3[i]=1ll*pow3[i-]*%mod;
fac[i]=1ll*fac[i-]*i%mod;
inv[i]=pow(fac[i],mod-);
}
int l=,r=,nl,nr,ans=;
for(int i=n;i>=;--i)
{
nl=max(,n-m-i+>>);
nr=min(n-i,m+n-i>>);
if(nl>l) ans=(ans-f(n-i,l++)+mod)%mod;
while(nr>r) ans=(ans+f(n-i,++r))%mod;
g[i]=ans;
ans=5ll*ans%mod;
if(nl>=) ans=(ans+3ll*f(n-i,nl-)%mod)%mod;
ans=(ans-3ll*f(n-i,nr)%mod+mod)%mod;
}
ans=;
for(int i=;i<=n;++i) ans=(ans+1ll*C(n,i)*g[i]%mod)%mod;
printf("%d",ans);
return ;
}

2020牛客寒假算法基础集训营4 J 二维跑步的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. 2020牛客寒假算法基础集训营2 J.求函数 (线段树 推公式 单点修改 区间查询)

    https://ac.nowcoder.com/acm/contest/3003/J 题解: #include<bits/stdc++.h> typedef long long ll; u ...

  4. 2020牛客寒假算法基础集训营1 J. 缪斯的影响力 (矩阵快速幂/费马小定理降幂)

    https://ac.nowcoder.com/acm/problem/200658 f(n) = f(n-1) * f(n-2) * ab ,f的第一项是x,第二项是y. 试着推出第三项是x·y·a ...

  5. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  6. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  7. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. 牛客寒假算法基础集训营5 J 炫酷数学

    链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...

  9. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

随机推荐

  1. 安装Anaconda3时出现conda不是内部或者外部命令

    在win10,64位,python版本为3.7的环境下安装anaconda3的时候,无法在命令行执行conda命令,一直提示conda不是内部或者外部命令,参考网上的修改环境变量,修改完后还是没有用, ...

  2. 「CSP-S模拟赛」2019第二场

    目录 T1 Jam的计数法 题目 考场思路(正解) T2 「TJOI / HEOI2016」排序 题目 考场思路(假正解) 正解 T3 「THUWC 2017」随机二分图 题目 考场思路 正解 这场考 ...

  3. python第四节【函数】

    函数 1. 函数 def greet_user(): """显示简单的问候语""" print("Hello") gre ...

  4. 《TCP/IP网络编程》读书笔记

    1.Windows 下的 socket 程序和 Linux 思路相同,但细节有所差别(1) Windows 下的 socket 程序依赖 Winsock.dll 或 ws2_32.dll,必须提前加载 ...

  5. Vue中修改组件默认样式

    vue 中直接使用 class 修改组件的默认样式,在使用 scoped 之后,样式是没有效果. 此时可以使用div 包裹组件,deep 可以实现修改组件样式 .lxfix /deep/ .contr ...

  6. Anniversary party POJ - 2342

    题目链接 经典的树形dp,最大独立集,对于每个点就有2个状态,选/不选 设\(dp_{i,0}\)表示不选第i个,\(dp_{i,1}\)表示选第i个,容易得到其状态转移 \(dp_{i,0} = \ ...

  7. 使用 swiper 制作 导航,点击项居中

    目的:导航有多个,被点击的项居中显示. html: <div class="swiper-container"> <div class="swiper- ...

  8. 连接mysql,oracle的命令 以及导入sql文件

    Oracle 1,sqlplus  username/password 导入: 2,@后面跟着sql文件的路径,回车,导入数据 @D:/test.sql; 导入完毕,输入commit; MySQL: ...

  9. Mybatis中mapper.xml的使用

    详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...

  10. Educational Codeforces Round 77 (Rated for Div. 2) - D. A Game with Traps(二分)

    题意:$m$个士兵,每个士兵都有一个灵敏度$a[i]$,起点为$0$,终点为$n + 1$,在路上有$k$个陷阱,每个陷阱有三个属性$l[i],r[i],d[i]$,$l[i]$表示陷阱的位置,如果你 ...