2018.11.03-dtoj-3130-流浪者(rover)
题目描述:
有一位流浪者正在一个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)相关推荐
- 2018.11.03 NOIP模拟 地球发动机(线性dp)
传送门 考试5分钟写完. 如果没这题今天多半爆零了(汗 直接二分出合法的转移范围. 然后用后面的状态更新前面的就可以了. 代码
- Unity3d 在 twitter 转载(周报) 2018.11.10
选自过去1~2周的内容: https://twitter.com/unity3d 日文: Unity WebGL启动过程 Unity减少内存使用方法(主要是WebGL) 2) Shader: 决定扩展 ...
- QIIME 2用户文档. 18使用q2-vsearch聚类OTUs(2018.11)
文章目录 前情提要 使用`q2-vsearch`聚类序列为OTUs 下载数据 序列去冗余 特征[频率]和特征数据[序列]的聚类 无参聚类 有参聚类 半有参聚类 Reference 译者简介 猜你喜欢 ...
- QIIME 2用户文档. 17序列双端合并read-joining(2018.11)
文章目录 前情提要 序列双端合并的另一种方法`read-joining` 数据下载 序列合并 查看合并序列的数据质量和摘要 序列质控 Deblur 查看Deblur特征表 导入双端合并的序列 导入序列 ...
- QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)
文章目录 前情提要 鉴定和过滤嵌合体序列`q2-vsearch` 数据下载 无参嵌合体鉴定 可视化统计结果 过滤特征表和序列 过滤嵌合体和可疑序列 过滤嵌合但保留可疑序列 Reference 译者简介 ...
- QIIME 2用户文档. 15进行纵向和成对样本比较q2-longitudinal(2018.11)
文章目录 前情提要 进行纵向和成对样本比较`q2-longitudinal` 成对差异比较 线性混合效应模型 波动性分析 跟踪变化率的第一个差异 从静态时间点跟踪变化率 非参数微生物相关性试验(NMI ...
- QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
文章目录 前情提要 预测样本元数据`q2-sample-classifier` 预测样本分类 预测样本连续型元数据 嵌套交叉验证为所有样本提供预测 最佳实践:不应该使用`q2-sample-class ...
- QIIME 2用户文档. 13数据评估和质控Evaluating and controlling(2018.11)
文章目录 前情提要 数据评估和质控`q2-quality-control` 下载数据 基于比对过滤序列 质量评估已知组成的样品 评估序列质量 Reference 译者简介 猜你喜欢 写在后面 前情提要 ...
- QIIME 2用户文档. 12训练特征分类器Training feature classifiers(2018.11)
文章目录 前情提要 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 Reference 译者简介 猜你喜欢 写在后面 前情提要 QIIME 2可重复.交互 ...
- QIIME 2用户文档. 11数据筛选Filtering data(2018.11)
文章目录 前情提要 QIIME 2用户文档. 11数据筛选 下载实验相关数据 过滤特征表 按数据量过滤 偶然因素的过滤 基于索引的过滤 基于元数据的筛选 基于物种过滤表和序列 过滤序列 过滤距离矩阵 ...
最新文章
- 这样建统一告警平台,运维的告警麻痹症有救了
- 《Apache Flink官方文档》 Apache Flink介绍
- linux Centos6.5使用yum安装mysql
- mapreduce编程实例python-Python编写MapReduce作业的简单示例
- python把列表样式的字符串重新转换为列表
- MyBatis 传递多个参数
- 《可用性测试手册(第2版)》一第1章 什么造就了可用性1.1 “可用”究竟是什么...
- 细说嵌入式Linux文件系统的制作方法
- matlab傅里叶光学仿真,计算傅里叶光学实现衍射图样的计算
- 9大最佳工程施工项目管理系统
- 微信公众号 菜单 { “errcode“: 47001, “errmsg“: “data format error rid: 61b36b ...“}
- Exynos4412 移植Linux Kernel 5.4过程记录(三)——根文件系统构建与SD卡挂载fs
- 随机数生成器【欧拉常数】
- Unity3D和UE4的保护方式与.net的区别
- 移动应用广告之商业变现的实现策略
- hdu 5755 Gambler Bo 高斯消元
- H5端嵌入公众号后,修改头部标题
- 玉米田 组合数学 环涂色
- html 判断text相等,实用的28个js验证
- mysql优化之query_cache_type的DEMAND参数介绍