[CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)]飞行棋
题目链接: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)]飞行棋相关推荐
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)比赛总结
CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)比赛总结 总结: 这场比赛不太顺心,B,I水题 10分钟内A了.A题推公式用double写卡了1个小时,换成其他暴力 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)
感觉自己代码能力好弱啊 T1 完全k叉树 传送门 Solution 首先特判一下K=1K=1K=1 然后处理出最大满KKK叉树,设这棵树的深度为rankrankrank,根节点的深度为000,这个时候 ...
- Comet OJ CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)
Preface 在一个月黑风高的夜晚我这个蒟蒻正踌躇着打什么比赛好 是继续做一场AGC,还是去刷一场CF 然后,一道金光闪过(滑稽),我们的红太阳bzt给我指明了方向: 你太菜了,我知道有一场很水的比 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E
题面 这个题暴好啊,考了很多东西. 首先设f(x)为离终点还有x步要走的期望步数,我们可以发现 : 1.x>=k时,x可以转移到的点的下标都<x. 2.x<k时,则可能走回到x或者下 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)
题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为. 3.如果当前回合掷得 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) 飞行棋
https://www.cometoj.com/contest/59/problem/E?problem_id=2714 思路:高斯消元求dp[1]~dp[k-1];然后利用递推式矩阵快速幂求出dp[ ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)部分题解
茶颜悦色 题意 固定kkk的矩形,能最多框住多少个点. 题解 假如我们固定一个矩形,以左下角为坐标. 这样子对于(a,b)(a,b)(a,b),那么能够包括到这个点的矩形左下角的范围: x∈(a−k, ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)A——完全k叉树
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
- A 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019))
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
- 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
最新文章
- javascript中将整数添加千位符号
- RabbitMQ创建远程连接用户
- linux非root用户搭建docker,Linux CentOS 7 非root用户安装源码版Docker
- Fiddler抓包工具详解(一)(fiddler原理,HTTP请求构成)
- js实现HTML标题栏中新消息提示效果
- mysql 二次 聚合,MySql-聚合查询
- 点乘 线性代数_如果看了这些还不懂线性代数,你就来锤我和广坤
- 通过C#中的在线文件自动更新应用程序
- HDU 5265 pog loves szh II (二分查找)
- Java编程降序排序代码,Java选择排序(升序跟降序)
- 成熟的软件资产管理——license管理
- xml和map相互转化
- Graph Neural Networks with Generated Parameters for Relation Extraction
- java触发器linux,Auto activation triggers for Java(代码提示)功能扩展
- 【C语言】结构体指针与结构体数组
- 大学物理实验试卷1到8_15_试卷(光学,大学物理实验)_doc_大学课件预览_高等教育资讯网...
- BootstrapDialog.show函数底层简化
- firefox添加搜狗搜索引擎搜索时乱码
- [Python] 制作超级玛丽游戏
- remove和removeat之间的区别?
热门文章
- asp.net MVC4, Ninject auto-mating
- 入门命令23-更换CMD窗口的颜色:color
- xna中的截屏操作处理
- 如何优雅地计算多变量
- mysql+文章显示_jsp+mysql文章内容分页显示
- mongodb 笔记
- git 服务器上新建项目
- shop++源码反编译----随笔
- 清除每隔5000毫秒请求一次接口的定时器(需求:每当我手动核销电子码,页面上的显示数据要实时更新到)...
- 2016012052+小学四则运算练习软件项目报告