题目

飞行棋的规则如下:

1、每名玩家有一个棋子,每个回合可以掷一次骰子。

2、如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,…,k,且掷得每种点数的概率均为​。

3、如果当前回合掷得的点数为 Q,则玩家控制的棋子前进 Q 步。

4、若当前棋子的位置到终点的距离 d < Q,则棋子先行动 d 步到终点,再倒退 Q-d 步。(即到终点的距离变为 Q−d)

5、某一回合结束后,若该玩家的棋子恰好到达终点,则宣布胜利。

璇璇姐姐参与了这个游戏,已知现在她的棋子到终点的距离为 d,

游戏使用的骰子有 k面,求璇璇获得胜利需要的回合数期望。

保证 1<=k<=20,1<=d<=1e18,且k<=d。

思路来源

fls

题解

考虑距离终点k步及以内的情形,dp[i]代表从i这个点,走到终点的期望数

那么dp[1],掷到一步获胜,掷到两步回到1的位置,掷到三步到2的位置,掷到k步去k-1的位置

,其中dp[0]=0

类似地有,

可以列出所有方程,

可以发现,由于右边每项括号里都有k-1项非零值,高度对称,

所以可以构造一组全相等的解,代入x有x=k

后面的仍用搞矩阵快速幂即可

学到了把k+1阶向量也搞成(k+1)*1的矩阵技巧,

这样最后求第n项时,再搞一个矩阵乘法即可

代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;
const ll MOD = 1e9+7;
const int MAXN = 22;
ll d,k,inv,ans;
ll modpow(ll x,ll n,ll mod)
{ll res=1;for(;n;n/=2,x=x*x%mod)if(n&1)res=res*x%mod;return res;
}
struct mat {ll c[MAXN][MAXN];int m, n;mat(){memset(c, 0, sizeof(c));m=n=MAXN;} mat(int a, int b) : m(a), n(b) {memset(c, 0, sizeof(c));}void clear(){memset(c, 0, sizeof(c)); }mat operator * (const mat& temp) {mat ans(m, temp.n);for (int i = 0; i < m; i ++)for (int j = 0; j < temp.n; j ++){for (int k = 0; k < n; k ++){ans.c[i][j] += c[i][k] * temp.c[k][j]%MOD;//能不取模 尽量不取模//这里maxn=2 故不会超过ll 视具体情况 改变取模情况if(ans.c[i][j]>=MOD)ans.c[i][j]%=MOD;}}return ans;}friend mat operator ^(mat M, ll n) {mat ans(M.m, M.m);for (int i = 0; i < M.m; i ++)ans.c[i][i] = 1; while (n > 0) {if (n & 1) ans = ans * M;M = M * M;n >>= 1;}return ans;}
};
int main()
{scanf("%lld%lld",&d,&k);mat a(k+1,k+1),b(k+1,1); inv=modpow(k,mod-2,mod);for(int i=0;i<k;++i)a.c[0][i]=inv;a.c[0][k]=1;for(int i=1;i<k;++i)a.c[i][i-1]=1;a.c[k][k]=1;a=a^(d-k);for(int i=0;i<k;++i)b.c[i][0]=k;b.c[k][0]=1;a=a*b;printf("%lld\n",a.c[0][0]);return 0;
} 

CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)相关推荐

  1. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)比赛总结

    CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)比赛总结 总结: ​ 这场比赛不太顺心,B,I水题 10分钟内A了.A题推公式用double写卡了1个小时,换成其他暴力 ...

  2. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)

    感觉自己代码能力好弱啊 T1 完全k叉树 传送门 Solution 首先特判一下K=1K=1K=1 然后处理出最大满KKK叉树,设这棵树的深度为rankrankrank,根节点的深度为000,这个时候 ...

  3. Comet OJ CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)

    Preface 在一个月黑风高的夜晚我这个蒟蒻正踌躇着打什么比赛好 是继续做一场AGC,还是去刷一场CF 然后,一道金光闪过(滑稽),我们的红太阳bzt给我指明了方向: 你太菜了,我知道有一场很水的比 ...

  4. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E

    题面 这个题暴好啊,考了很多东西. 首先设f(x)为离终点还有x步要走的期望步数,我们可以发现 : 1.x>=k时,x可以转移到的点的下标都<x. 2.x<k时,则可能走回到x或者下 ...

  5. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) 飞行棋

    https://www.cometoj.com/contest/59/problem/E?problem_id=2714 思路:高斯消元求dp[1]~dp[k-1];然后利用递推式矩阵快速幂求出dp[ ...

  6. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)部分题解

    茶颜悦色 题意 固定kkk的矩形,能最多框住多少个点. 题解 假如我们固定一个矩形,以左下角为坐标. 这样子对于(a,b)(a,b)(a,b),那么能够包括到这个点的矩形左下角的范围: x∈(a−k, ...

  7. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)A——完全k叉树

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

  8. A 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019))

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

  9. 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

最新文章

  1. view5.3登录桌面提示当前可用桌面资源不足
  2. 【热点】黑客入侵的常用手段及防护措施分析
  3. 超励志!从中专生到教授,他32岁成为国家杰青!
  4. RabbitMQ和Kafka的显著差异(3)
  5. tcp拥塞控制_面试必备TCP(四):拥塞控制
  6. 大容量NoSql解决方案:Aerospike实战
  7. sql 如何设置行级锁_如何使用SQL Server 2016行级安全性过滤和阻止数据访问
  8. hidefocus小技巧
  9. sqlite字符串连接(追加写入)
  10. python英文参考文献格式_英文论文参考文献标准格式
  11. 调用阿里云语音识别接口
  12. 笔记:Python Data Science Toolbox (Part 1)
  13. DAY01.使用JAVA从国家统计局爬取2020年全国统计用区划代码和城乡划分代码(省市区数据)
  14. 用java输入学生姓名查询成绩_java实现学生成绩录入系统
  15. 整理的几种适用于GROMACS输入的小分子拓扑文件获取流程
  16. win11 删除系统自带输入法
  17. C语言中输出26个字母
  18. div+css静态网页设计 电商购物网站设计(55页) 电商网页设计制作 简单静态HTML网页作品 购物网页作业成品 学生商城网站模板
  19. win11不兼容很多游戏?win11不兼容哪些游戏
  20. 清华版五年级计算机下册教案,清华大学出版社小学五年级信息技术教案新版

热门文章

  1. 入耳式监控系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. Verilog实现---IEEE标准的单精度浮点乘法器
  3. 疑难杂症:同网段ping不通,跨网段建不了链,怎么破?
  4. 不用任何软件,批量转化图片格式png转jpg,bat脚本实现
  5. Codeforces Round #777 (Div. 2) ABCD题解
  6. 个人支付宝/微信/云闪付收款技术总览
  7. 浅议实时操作系统RTOS
  8. FireFox插件 - Greasemonkey
  9. 互联网时代颠覆的传统行业
  10. cod12正版链接在线服务器6,cod6盗版服务器管理命令(Cod6 pirated server management commands).doc...