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. Android学习使用基本界面组件(下拉框,单选框,复选框,数字转轮,滚动条)

    (一)建立单选框按钮 RadioGroup和RadioButton建立单选框按钮 字符串资源文件: <resources> <string name="app_name&q ...

  2. 详解Django中Request对象的相关用法

    原文链接:http://www.jb51.net/article/69624.htm 1.从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时 ...

  3. tkinter学习(5)messagebox、pack、grid和place方法

    1.messagebox信息弹出框 1.1 代码: import tkinter as tk #导出tk模块 import tkinter.messagebox #导出弹出信息框 #定义窗口.标题.大 ...

  4. oracle 多表查询,请教个问题

    首先,是有一个合同表,对应数据库表 lg_bill_of_lading_detail  简称 bold    有一个用户表 EMT_USER 简称 e 合同审批 后,合同表里  会有一个审核人AUDI ...

  5. Codeforces Round #601 (Div. 2)D(蛇形模拟)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; vector<char>an ...

  6. SpringCloud全家桶学习之概览(一)

    一.概览 根据百度百科的描述,微服务架构是一项在云中部署应用和服务的新技术.而SpringCloud是微服务架构思想的一个具体实现,它为开发人员提供了构建分布式系统中一些常见模式的工具(服务注册与发现 ...

  7. devexpress layoutview

    1.设定数据源 2.设置view 3.设置 templat cardview 4 显示

  8. DataGrid 獲取 制定 row Col 單元格

    public static class DataGridHelper     {         /// <summary>                  /// Gets the v ...

  9. SQL语句优化分析

    分析比较执行时间计划读取情况 select * from dbo.Product 执行上面语句一般情况下只给你返回结果和执行行数,那么你怎么分析呢,怎么知道优化之后跟没有优化的区别呢. 下面几种方法: ...

  10. .NET中的字符串(5):字符串驻留

    StringBuilder对象 通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间.这样就引出 ...