题目链接:https://ac.nowcoder.com/acm/contest/882/A

题目大意:圆上有\(n\)个点,标号从\(0\)到\(n-1\),初始一个人在点\(0\),每次会等概率向左或向右移动一步,如果某一时刻所有点均被访问过则停止移动,问最终停留在\(m\)点的概率

题解:若\(m \neq 0\)且\(n \neq 1\),则\(ans=\frac{1}{n-1}\),具体证明如下

   若设答案为\(f(n,m)\),可以发现这个函数有如下性质:

    1.函数是关于零点对称的,即\(f(n,m)=f(n,n-m)\)

    2.若\(m\neq 0,1,n-1\),则\(f(n,m)=\frac{f(n,m-1)+f(n,m+1)}{2}\),画一下图就能知道为什么了

   接着考虑\(n\)的奇偶性,若\(n\)为奇数,则设\(a=\left \lfloor \frac{n}{2} \right \rfloor,b=\left \lceil \frac{n}{2} \right \rceil,c=b+1\)。可以发现由如上两条性质,有\(f(n,a)=f(n,b)\),且\(f(n,b)=\frac{f(n,a)+f(n,c)}{2}\),因此可以得出\(f(n,a)=f(n,b)=f(n,c)\)。以此类推则可以得出所有\(f(n,m)\)相等,所以函数取值为\(\frac{1}{n-1}\)

   若\(n\)为偶数,则设\(a=\frac{n}{2}-1,b=\frac{n}{2},c=\frac{n}{2}+1\),可以得出\(f(n,a)=f(n,c)\),且\(f(n,b)=\frac{f(n,a)+f(n,c)}{2}\),同样可以推出\(f(n,a)=f(n,b)=f(n,c)\),同理可证\(f(n,m)=\frac{1}{n-1}(m\neq 0)\)

   注意对\(n=1\)的特判即可

 #include<bits/stdc++.h>
using namespace std;
#define LL long long
#define MOD 1000000007
LL T,n,m,ans=1ll;
LL qow(LL x,LL y){return y?(y&?x*qow(x,y-)%MOD:qow(x*x%MOD,y/)):;}
int main()
{
scanf("%lld",&T);
while(T--)
{
LL res;
scanf("%lld%lld",&n,&m);
if(m==)res=n>?:;
else res=qow(n-,MOD-);
ans*=res,ans%=MOD;
printf("%lld\n",ans);
}
return ;
}

[2019牛客多校第二场][A. Eddy Walker]的更多相关文章

  1. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  2. 2019牛客多校第二场H-Second Large Rectangle

    Second Large Rectangle 题目传送门 解题思路 先求出每个点上的高,再利用单调栈分别求出每个点左右两边第一个高小于自己的位置,从而而得出最后一个大于等于自己的位置,进而求出自己的位 ...

  3. [2019牛客多校第二场][G. Polygons]

    题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...

  4. 2019 牛客多校第二场 H Second Large Rectangle

    题目链接:https://ac.nowcoder.com/acm/contest/882/H 题目大意 给定一个 n * m 的 01 矩阵,求其中第二大的子矩阵,子矩阵元素必须全部为 1.输出其大小 ...

  5. 2019牛客多校第二场H题(悬线法)

    把以前的题补补,用悬线求面积第二大的子矩形.我们先求出最大子矩阵的面积,并记录其行三个方向上的悬线长度.然后排除这个矩形,记得还得特判少一行或者少一列的情况 #include <bits/std ...

  6. 2019牛客多校第二场D-Kth Minimum Clique

    Kth Minimum Clique 题目传送门 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复 ...

  7. 2019牛客多校第二场F-Partition problem(搜索+剪枝)

    Partition problem 题目传送门 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s-= a对白队中所有人的对抗值.所以我们可以先 ...

  8. 2019牛客多校第二场BEddy Walker 2——BM递推

    题意 从数字 $0$ 除法,每次向前走 $i$ 步,$i$ 是 $1 \sim K$ 中等概率随机的一个数,也就是说概率都是 $\frac{1}{K}$.求落在过数字 $N$ 额概率,$N=-1$ 表 ...

  9. [2019牛客多校第二场][E. MAZE]

    题目链接:https://ac.nowcoder.com/acm/contest/882/E 题目大意:有一个\(n\times m\)的01矩阵,一开始可以从第一行的一个点出发,每次可以向左.向右. ...

随机推荐

  1. Object类的equals方法 常用API

    boolean equals (Object obj)(return this==obj):  p1.equals(p2): 基本数据类型比较的是值      引用数据类型:默认比较的是两个对象的地址 ...

  2. 1.3.3 并发容器类MAP/LIST/SET/QUEUE

    HashMap 下标计算方法:hashCode & (length-1) ,&按位与操作,二进制相同位都是1,该位才为1 JDK1.7与JDK1.8中HashMap区别: JDK1.8 ...

  3. LC 202. Happy Number

    问题描述 Write an algorithm to determine if a number is "happy". A happy number is a number de ...

  4. windows下memcache扩展安装和搭建

    ### windows下memcache扩展安装和搭建 背景:在做微信公众号的开发时,token的有效期为7200秒,所以需要对token进行保存,在这选择了memcache作为缓存工具 memcac ...

  5. python time模块认识

    time 模块 -- 时间获取和转换 time 模块提供各种时间相关的功能 在python中, 与时间处理有关的模块包括: time, datatime 以及 calendar 必要说明!: 虽然这个 ...

  6. mysqldump原理及实战

    使用mysqldump命令行工具创建逻辑备份: 注意mysqldump的版本和路径mysqldump命令创建的是逻辑备份,结果集有两种格式:一种是将数据转换成标准的SQL语句(一堆CREATE,DRO ...

  7. 怎样获取所有的embed节点对象

    <embed>是H5中新增的标签, 可以通过: document.embeds 和 document.plugins 获取所有的 embed 节点 document.embeds === ...

  8. 3037 插板法+lucas

    先说下lucas定理 1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 =  [n/p]*p+a0 (注意 这里( ...

  9. php对象转换为数组的部分代码

    function object_array($array){ if(is_object($array)){ $array = (array)$array; } if(is_array($array)) ...

  10. .net core 根据数据库生成实体类

    微软最近几年在跨平台上不断发力,很多.net程序员也摩拳擦掌,对微软寄以厚望.就在最近,微软还推出了asp .net core2.0预览版. 通过对.net core的简单尝试,我发现以往我们开发MV ...