Knights

t数轴上有n个骑士位于1,2,3,...n,移动速度相同,初始移动方向已知,当两个骑士相遇时,各有50%的概率赢,输了就死了,并且移动到0和n+1的位置时移动方向会翻转,问最右的骑士存活的概率。

首先,不能用一维dp。然后就是用\(f[i][j]\)表示前i割其实有j割向右走的概率。

#include <cstdio>
#include <cstring>
using namespace std; typedef long long LL;
const LL maxn=1005, mod=1e9+7;
LL T, n, a[maxn], ca, inv2;
LL f[maxn][maxn]; LL fpow(LL a, LL x){
LL ans=1, base=a;
for (; x; x>>=1, base*=base, base%=mod)
if (x&1) ans*=base, ans%=mod;
return ans;
} int main(){
scanf("%lld", &T); inv2=fpow(2, mod-2);
while (T--){
scanf("%lld", &n);
for (LL i=1; i<=n; ++i) scanf("%lld", &a[i]);
a[1]=1; a[n]=0; //肯定会回头走
memset(f, 0, sizeof(f));
f[0][0]=1;
for (LL i=1; i<=n; ++i)
for (LL j=i; j>0; --j){
if (a[i]){ f[i][j]=f[i-1][j-1]; continue; }
f[i][j]=(f[i][j+1]+f[i-1][j])*inv2%mod;
if (j==1) f[i][j]=(f[i][j+1]+f[i-1][j])%mod;
}
printf("Case #%lld: %lld\n", ca++,
(f[n][1]*inv2%mod));
}
return 0;
}

Knights0.的更多相关文章

随机推荐

  1. (转)C# -- 扩展方法的应用(Extension Methods)

    本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205 当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添 ...

  2. Java类与继承

      Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相 ...

  3. Hanoi双塔问题(递推)

    Hanoi双塔问题 时间限制: 1 Sec  内存限制: 128 MB提交: 10  解决: 4[提交][状态][讨论版][命题人:外部导入] 题目描述 给定A,B,C三根足够长的细柱,在A柱上放有2 ...

  4. python ConfigParser 读取配置文件

  5. 问题:C#根据生日计算属相;结果:C#实现根据年份计算生肖属相的方法

    这篇文章主要介绍了C#实现根据年份计算生肖属相的方法,涉及C#数组与字符串的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下   本文实例讲述了C#实现根据年份计算生肖属相的方法.分享给大家供大家 ...

  6. 今天出现编码出现了No suitable driver found for jdbc

    出现这样的情况,一般有四种原因: 一:连接URL格式出现了问题(Connection conn=DriverManager.getConnection("jdbc:mysql://local ...

  7. python中的变量以及字符串的使用

    在python中只有一个变量:动态变量 在Python当中令人奇怪的是我们的python没有静态变量,这个特性大大的增加了python的灵活性. 由于python中没有静态变量所以我们千万不要使用静态 ...

  8. android键盘的Done按钮

    在EditText中,可以使用setImeOptions()方法来来开启软键盘的"Done"按钮. 示例代码如下:editText.setImeOptions(EditorInfo ...

  9. SpringMVC接收对象数组参数进行封装

    前台代码:注意.contentType : "application/json; charset=utf-8",必须要设置,只有这样SpringMVC才认识这个json数组参数 f ...

  10. __get(),__set(),__isset(),__unset()

    __get(),__set(),__isset(),__unset() 在给不可访问属性赋值时,__set()会被调用读取不可访问属性的值时,__get()会被调用 当对不可访问属性调用isset() ...