hdu5819
补多校系列,具体见多校题解http://www.cnblogs.com/duoxiao/p/5777700.html
值得注意的是如果当前i初始向左,前i个骑士最终只有1个向右
对于f[i][1]状态的转移为f[i][1]=∑ f[i-1][k]*0.5^(k-1)
因为我们只要比k-1场就可以了,那一个活下来的是骑士i还是前i-1个骑士中的无关紧要
#include<bits/stdc++.h> using namespace std;
typedef long long ll;
const int mo=1e9+;
ll f[][],d[];
int a[],n; ll quick(ll x,int y)
{
ll s=;
while (y)
{
if (y&) s=s*x%mo;
x=x*x%mo;
y>>=;
}
return s;
} int main()
{
int cas;
scanf("%d",&cas);
d[]=; d[]=quick(,mo-);
for (int i=; i<=; i++) d[i]=d[i-]*d[]%mo;
for (int tt=; tt<=cas; tt++)
{
scanf("%d",&n);
for (int i=; i<=n; i++) scanf("%d",&a[i]);
printf("Case #%d: ",tt);
if (n==)
{
puts("");
continue;
}
memset(f,,sizeof(f));
f[][]=;
for (int i=; i<n; i++)
if (a[i])
{
for (int j=; j<=i; j++)
f[i][j]=f[i-][j-];
}
else {
for (int j=i-; j>=; j--)
f[i][j]=(f[i-][j]+f[i][j+])*d[]%mo;
for (int j=; j<=i-; j++)
f[i][]=(f[i][]+f[i-][j]*d[j-]%mo)%mo;
}
ll ans=;
for (int i=; i<n; i++)
ans=(ans+f[n-][i]*d[i]%mo)%mo;
printf("%lld\n",ans);
}
}
hdu5819的更多相关文章
随机推荐
- Oracle锁表查询以及解锁
一.查看锁表进程SQL语句 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...
- IE6,7,8支持css圆角
我们知道Webkit内核的浏览器支持-webkit-border-radius: 10px;属性(10px是圆角半径),可以直接解析出圆角;Firefox浏览器支持-moz-border-radius ...
- BZOJ1975 SDOI2010魔法猪学院(启发式搜索+最短路+堆)
对反图跑最短路求出每个点到终点的最短路径,令其为估价函数大力A*,第k次到达某个点即是找到了到达该点的非严格第k短路,因为估价函数总是不大于实际值.bzoj可能需要手写堆.正解是可持久化可并堆,至今是 ...
- hdu 1575 Tr A (二分矩阵)
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- cdh版本的hadoop安装及配置(伪分布式模式) MapReduce配置 yarn配置
安装hadoop需要jdk依赖,我这里是用jdk8 jdk版本:jdk1.8.0_151 hadoop版本:hadoop-2.5.0-cdh5.3.6 hadoop下载地址:链接:https://pa ...
- [Leetcode] Remove duplicates from sorted array 从已排序的数组中删除重复元素
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- BZOJ1305 [CQOI2009]dance跳舞 【网络流】
1305: [CQOI2009]dance跳舞 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 3714 Solved: 1572 [Submit][ ...
- pb_ds
#include<ext/pb_ds/priority_queue.hpp>#define ll long long#define pa pair<ll,int>using n ...
- 特殊密码锁 的通过码是:(请注意,在openjudge上提交了程序并且通过以后,就可以下载到通过码。请注意看公告里关于编程作业的说明)
// // main.cpp // openjudge特殊密码锁 // // Created by suway on 17/11/20. // Copyright © 2017年 suway. // ...
- WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)
今天学习WCF分布式开发步步为赢系列的15节:错误契约(FaultContract)与异常处理(ExceptionHandle).本节内容作为WCF分布式开发的一个重要知识点,无论在学习还是项目中都应 ...