题目链接:https://www.cometoj.com/contest/59/problem/E?problem_id=2714

求期望并且一堆转移基本上就是期望dp了(叉腰

照常的设dp[i]表示i位置到n位置的期望步数。则我们所求的是dp[0]。

初始化dp[n]=0,因为n到n的期望为0。

之后先讨论下i为n-1到n-k的时候。

我们可以列出转移方程(随便写几个

$dp[n-1]=\tfrac{1}{k}*(dp[n]+dp[n-1]+dp[n-2]+\cdot \cdot \cdot +dp[n-k+1])+1$

$dp[n-2]=\tfrac{1}{k}*(dp[n-1]+dp[n]+dp[n-1]+\cdot \cdot \cdot +dp[n-k+2])+1$

$\cdot \cdot \cdot\cdot \cdot \cdot$

$dp[n-k]=\tfrac{1}{k}*(dp[n-k+1]+dp[n-k+2]+dp[n-k+3]+\cdot \cdot \cdot +dp[n])+1$

这时候自(mang)信(fu)同学可能就直接上高斯消元了,而善于发现的老哥则会很轻松的写出一组解,即:$dp[n-1]=dp[n-2]=dp[n-3]=\cdot \cdot \cdot =dp[n-k]=k$

之后再讨论下i为n-k-1到0的时候

就是很简单的转移:$dp[i]=\tfrac{1}{k}*(dp[i+k]+dp[i+k-1]+dp[i+k-2]+\cdot \cdot \cdot +dp[i+1])+1$

这里就可以直接矩阵快速幂优化。

先上一个8/15AC,7/15RE的不加速代码方便理解:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<string>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long ll;
 8 const int maxn = 2e5 + 10;
 9 const ll mod = 1000000007;
10 ll dp[maxn];
11 ll qpow(ll a, ll b) {
12     ll ans = 1;
13     while (b) {
14         if (b & 1)ans = ans * a%mod;
15         a = a * a%mod;
16         b >>= 1;
17     }
18     return ans;
19 }
20 int main() {
21     ll n, k;
22     cin >> n >> k;
23     ll inv = qpow(k, mod - 2);
24     dp[n] = 0;
25     ll sum = 0;
26     for (int i = n - 1; i >= n - k; i--)
27         dp[i] = k, sum = (sum + dp[i]) % mod;
28     for (int i = n - k - 1; i >= 0; i--)
29         dp[i] = (sum * inv + 1) % mod, sum = (sum - dp[i + k] + dp[i] + mod) % mod;
30     printf("%lld\n", dp[0]);
31 }

之后是本题正解:(先咕咕一下

转载于:https://www.cnblogs.com/sainsist/p/11323696.html

[CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)]飞行棋相关推荐

  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)E.飞行棋(期望dp+矩阵快速幂)

    题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为​. 3.如果当前回合掷得 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. javascript中将整数添加千位符号
  2. RabbitMQ创建远程连接用户
  3. linux非root用户搭建docker,Linux CentOS 7 非root用户安装源码版Docker
  4. Fiddler抓包工具详解(一)(fiddler原理,HTTP请求构成)
  5. js实现HTML标题栏中新消息提示效果
  6. mysql 二次 聚合,MySql-聚合查询
  7. 点乘 线性代数_如果看了这些还不懂线性代数,你就来锤我和广坤
  8. 通过C#中的在线文件自动更新应用程序
  9. HDU 5265 pog loves szh II (二分查找)
  10. Java编程降序排序代码,Java选择排序(升序跟降序)
  11. 成熟的软件资产管理——license管理
  12. xml和map相互转化
  13. Graph Neural Networks with Generated Parameters for Relation Extraction
  14. java触发器linux,Auto activation triggers for Java(代码提示)功能扩展
  15. 【C语言】结构体指针与结构体数组
  16. 大学物理实验试卷1到8_15_试卷(光学,大学物理实验)_doc_大学课件预览_高等教育资讯网...
  17. BootstrapDialog.show函数底层简化
  18. firefox添加搜狗搜索引擎搜索时乱码
  19. [Python] 制作超级玛丽游戏
  20. remove和removeat之间的区别?

热门文章

  1. asp.net MVC4, Ninject auto-mating
  2. 入门命令23-更换CMD窗口的颜色:color
  3. xna中的截屏操作处理
  4. 如何优雅地计算多变量
  5. mysql+文章显示_jsp+mysql文章内容分页显示
  6. mongodb 笔记
  7. git 服务器上新建项目
  8. shop++源码反编译----随笔
  9. 清除每隔5000毫秒请求一次接口的定时器(需求:每当我手动核销电子码,页面上的显示数据要实时更新到)...
  10. 2016012052+小学四则运算练习软件项目报告