题目描述:

有一位流浪者正在一个n*m的网格图上流浪。初始时流浪者拥有S点体力值。
流浪者会从(1,1)走向(n,m),并且他只会向下走((x,y)→(x+1,y))或是往右走((x,y)→(x,y+1)),在所有可行的路线中他会随机选择一条。
网络图中还有K个障碍点。若流浪者当前体力值为S,则他经过一个障碍点后体力值会变为⌈S/2⌉(上取整)。现
在请你求出,流浪者到达(n,m)时他体力值的期望是多少。
若答案为ab,则你输出ab在模109+7意义下的值即可。

输入:

第一行四个整数n,m,K,S, 意义见题目描述。
接下来K行每行两个整数Xi,Yi,表示一个障碍点,保证一个障碍点不会出现多次。起点与终点可能也会是障碍点。

输出:

仅一行一个整数表示答案。

数据范围:

30%的数据:n,m≤10
50%的数据:n,m≤1000
1000%的数据:1≤n,m≤105,0≤K≤min(n*m,2000),1≤S≤106

算法标签:期望DP

式子题,公式太难打了,仅附代码

以下代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define il inline
#define LL long long
#define _(d) while(d(isdigit(ch=getchar())))
using namespace std;
const int N=1e5+5,p=1e9+7;
LL jc[N<<1],ny[N<<1],ans;
struct node{int x,y;}pi[2005];
int n,m,k,tmp,num,s,f[2005][25];
il int read(){int x,f=1;char ch;_(!)ch=='-'?f=-1:f;x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return f*x;}
bool cmp(node t1,node t2){return (t1.x<t2.x||(t1.x==t2.x)&&t1.y<t2.y);}
il LL ksm(LL a,int y){LL b=1;while(y){if(y&1)b=b*a%p;a=a*a%p;y>>=1;}return b;}
il LL C(int n,int m){return jc[n]*ny[m]%p*ny[n-m]%p;}
il LL way(int i,int j){int x=pi[j].x-pi[i].x,y=pi[j].y-pi[i].y;return C(x+y,x);
}
int main()
{n=read();m=read();k=read();tmp=read();s=tmp;for(int i=1;i<=k;i++)pi[i].x=read(),pi[i].y=read();sort(pi+1,pi+1+k,cmp);pi[++k].x=n;pi[k].y=m;int kk=n+m;jc[0]=1;for(int i=1;i<=kk;i++)jc[i]=jc[i-1]*(LL)i%p;ny[kk]=ksm(jc[kk],p-2);for(int i=kk;i;i--)ny[i-1]=ny[i]*(LL)i%p;num=0;/*tmp=(tmp+1)>>1;*/while(tmp>1){num++;tmp=(tmp+1)>>1;}for(int i=1;i<=k;i++){for(int j=0;j<=num;j++){f[i][j]=C(pi[i].x+pi[i].y-2,pi[i].x-1);for(int kk=1;kk<i;kk++){if(pi[kk].y>pi[i].y)continue;f[i][j]=((f[i][j]-f[kk][j]*way(kk,i)%p)%p+p)%p;}for(int kk=1;kk<j;kk++){f[i][j]=((f[i][j]-f[i][kk])%p+p)%p;}}
//      f[i][num]=C(pi[i].x+pi[i].y-2,pi[i].x-1);
//      for(int j=num;j>=1;j--)f[i][j]=((f[i][j]-f[i][j-1])%p+p)%p;printf("%d ",s);
    }for(int i=1;i<=num;i++){ans=(ans+(LL)s*f[k][i]%p)%p;s=(s+1)>>1;}LL sum=C(n+m-2,n-1);for(int i=1;i<=num;i++)sum=(sum-f[k][i]+p)%p;ans=(ans+sum)%p;ans=ans*ksm(C(n+m-2,n-1),p-2)%p;printf("%lld\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/Jessie-/p/9901359.html

2018.11.03-dtoj-3130-流浪者(rover)相关推荐

  1. 2018.11.03 NOIP模拟 地球发动机(线性dp)

    传送门 考试5分钟写完. 如果没这题今天多半爆零了(汗 直接二分出合法的转移范围. 然后用后面的状态更新前面的就可以了. 代码

  2. Unity3d 在 twitter 转载(周报) 2018.11.10

    选自过去1~2周的内容: https://twitter.com/unity3d 日文: Unity WebGL启动过程 Unity减少内存使用方法(主要是WebGL) 2) Shader: 决定扩展 ...

  3. QIIME 2用户文档. 18使用q2-vsearch聚类OTUs(2018.11)

    文章目录 前情提要 使用`q2-vsearch`聚类序列为OTUs 下载数据 序列去冗余 特征[频率]和特征数据[序列]的聚类 无参聚类 有参聚类 半有参聚类 Reference 译者简介 猜你喜欢 ...

  4. QIIME 2用户文档. 17序列双端合并read-joining(2018.11)

    文章目录 前情提要 序列双端合并的另一种方法`read-joining` 数据下载 序列合并 查看合并序列的数据质量和摘要 序列质控 Deblur 查看Deblur特征表 导入双端合并的序列 导入序列 ...

  5. QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)

    文章目录 前情提要 鉴定和过滤嵌合体序列`q2-vsearch` 数据下载 无参嵌合体鉴定 可视化统计结果 过滤特征表和序列 过滤嵌合体和可疑序列 过滤嵌合但保留可疑序列 Reference 译者简介 ...

  6. QIIME 2用户文档. 15进行纵向和成对样本比较q2-longitudinal(2018.11)

    文章目录 前情提要 进行纵向和成对样本比较`q2-longitudinal` 成对差异比较 线性混合效应模型 波动性分析 跟踪变化率的第一个差异 从静态时间点跟踪变化率 非参数微生物相关性试验(NMI ...

  7. QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)

    文章目录 前情提要 预测样本元数据`q2-sample-classifier` 预测样本分类 预测样本连续型元数据 嵌套交叉验证为所有样本提供预测 最佳实践:不应该使用`q2-sample-class ...

  8. QIIME 2用户文档. 13数据评估和质控Evaluating and controlling(2018.11)

    文章目录 前情提要 数据评估和质控`q2-quality-control` 下载数据 基于比对过滤序列 质量评估已知组成的样品 评估序列质量 Reference 译者简介 猜你喜欢 写在后面 前情提要 ...

  9. QIIME 2用户文档. 12训练特征分类器Training feature classifiers(2018.11)

    文章目录 前情提要 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 Reference 译者简介 猜你喜欢 写在后面 前情提要 QIIME 2可重复.交互 ...

  10. QIIME 2用户文档. 11数据筛选Filtering data(2018.11)

    文章目录 前情提要 QIIME 2用户文档. 11数据筛选 下载实验相关数据 过滤特征表 按数据量过滤 偶然因素的过滤 基于索引的过滤 基于元数据的筛选 基于物种过滤表和序列 过滤序列 过滤距离矩阵 ...

最新文章

  1. 这样建统一告警平台,运维的告警麻痹症有救了
  2. 《Apache Flink官方文档》 Apache Flink介绍
  3. linux Centos6.5使用yum安装mysql
  4. mapreduce编程实例python-Python编写MapReduce作业的简单示例
  5. python把列表样式的字符串重新转换为列表
  6. MyBatis 传递多个参数
  7. 《可用性测试手册(第2版)》一第1章 什么造就了可用性1.1 “可用”究竟是什么...
  8. 细说嵌入式Linux文件系统的制作方法
  9. matlab傅里叶光学仿真,计算傅里叶光学实现衍射图样的计算
  10. 9大最佳工程施工项目管理系统
  11. 微信公众号 菜单 { “errcode“: 47001, “errmsg“: “data format error rid: 61b36b ...“}
  12. Exynos4412 移植Linux Kernel 5.4过程记录(三)——根文件系统构建与SD卡挂载fs
  13. 随机数生成器【欧拉常数】
  14. Unity3D和UE4的保护方式与.net的区别
  15. 移动应用广告之商业变现的实现策略
  16. hdu 5755 Gambler Bo 高斯消元
  17. H5端嵌入公众号后,修改头部标题
  18. 玉米田 组合数学 环涂色
  19. html 判断text相等,实用的28个js验证
  20. mysql优化之query_cache_type的DEMAND参数介绍

热门文章

  1. Redis之通用的key操作命令
  2. IDEA中记一次BuildProject不好使的解决过程
  3. No module named cv2
  4. 让你了解什么是内存屏障
  5. 学会用各种方式备份MySQL数据库
  6. 启帆工业机器人综合收入如何_发那科工业机器人ROBOGUIDE如何更方便的查看机器人报警日志...
  7. 中奖名单 | 价值 199 的大数据平台研发课程幸运er
  8. 为梦想而战,高考励志主题教育班会PPT
  9. SQL优化 · 经典案例 · 索引篇
  10. 修改Windows7登录界面背景图片的方法