[CSP-S模拟测试]:停不下来的团长奥尔加(DP)
题目传送门(内部题125)
输入格式
第一行一个整数$n$,含义同题中所述。
第二行$n$个整数,第$i$个数表示$p_i$,含义同题中所述。
输出格式
一行一个整数,表示答案对$1000000007(10^9+7)$取模后的结果。
样例
样例输入1:
2
1 2
样例输出1:
4
样例输入2:
4
1 1 2 3
样例输出2:
20
样例输入3:
5
1 1 1 1 1
样例输出3:
62
数据范围与提示
样例$1$解释:
初始奥尔加在位置$1$上,因为这是他第$1$次到达位置$1$,所以第一步他会走到$p_i=1$上,此时的位置$1$已经到达了两次,所以第二步奥尔加会走到$1+1=2$位置上。
同样的,奥尔加接下来会走$p_2=2$,$2+1=3$,一共花费$4$步到达$n+1$位置。
样例$3$解释:
你真的忍心让我全部列出来吗,所以说,不要停下来啊(指偷懒)。
数据范围:
对于$10\%$的数据,保证$1\leqslant n\leqslant 20$;
对于另外$10\%$的数据,满足$p_i=i$;
对于另外$20\%$的数据,满足$p_i=1$;
对于另外$20\%$的数据,保证$1\leqslant n\leqslant 1,000$;
对于$100\%$的数据,保证$1\leqslant n\leqslant 1,000,000,1\leqslant p_i\leqslant i$。
题解
考虑$DP$,定义$dp[i]$表示从$1$第一次到$i$的步数。
那么我们可以列出状态转移方程:
$$dp[i+1]=2\times dp[i]-dp[p[i]]+2$$
因为$p[i]\leqslant i$,所以直接递推即可。
时间复杂度:$\Theta(n)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
int n;
long long dp[1000002];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{int x;scanf("%d",&x);dp[i+1]=(2*dp[i]-dp[x]+2+mod)%mod;}
printf("%d",dp[n+1]);
return 0;
}
rp++
[CSP-S模拟测试]:停不下来的团长奥尔加(DP)的更多相关文章
- [CSP-S模拟测试]:小L的数(数位DP+模拟)
题目传送门(内部题132) 输入格式 第一行一个整数$t$. 接下来$t$行每行一个整数$n$. 输出格式 $t$行,每行一个整数表示答案. 样例 样例输入: 41818231232691052109 ...
- [CSP-S模拟测试]:Cover(单调栈++单调队列+DP)
题目传送门(内部题126) 输入格式 第一行两个个整数$n,m$表示区间的长度与彩灯的数量. 接下来$m$行,每行三个整数$l_i,r_i,a_i$表示一条彩灯能够覆盖的区间以及它的美观程度. 输出格 ...
- [CSP-S模拟测试]:数对(线段树优化DP)
题目传送门(内部题96) 输入格式 第一行一个整数$n$,接下来$n$行每行三个整数$a_i,b_i,w_i$. 输出格式 一行一个整数表示最大权值和. 样例 样例输入: 54 4 12 3 31 5 ...
- [CSP-S模拟测试]:邻面合并(状压DP)
题目背景 $NEWorld$作为一个$3D$游戏,对渲染(图形绘制)的效率要求极高.当玩家扩大视野范围时,可见的方块面数量将会迅速增多,以至于大量的顶点处理很快就成为了图形管线中的瓶颈.乔猫想了想,决 ...
- [CSP-S模拟测试]:石头剪刀布(rps)(概率DP)
题目传送门(内部题9) 输入格式 第一行一个整数$n$.接下来$n$行每行$3$个非负整数$r_i,p_i,s_i$. 输出格式 一行一个实数表示答案.当你的答案与标准答案的绝对或相对误差不超过${1 ...
- [CSP-S模拟测试]:小奇的矩阵(matrix)(DP+数学)
题目背景 小奇总是在数学课上思考奇怪的问题. 题目描述 给定一个$n\times m$的矩阵,矩阵中的每个元素$a_{i,j}$为正整数.接下来规定: $1.$合法的路径初始从矩阵左上角出发,每 ...
- 联赛模拟测试5 涂色游戏 矩阵优化DP
题目描述 分析 定义出\(dp[i][j]\)为第\(i\)列涂\(j\)种颜色的方案数 然后我们要解决几个问题 首先是求出某一列涂恰好\(i\)种颜色的方案数\(d[i]\) 如果没有限制必须涂\( ...
- D. 停不下来的团长奥尔加 动态规划
题目描述 分析 设\(f[i]\) 为从 \(i\) 走到 \(i+1\) 的步数 初始值 \(f[i]=2\) 则 \(f[i]=\sum_{i=p[i]}^{i}f[i]\) 考试的时候用树状数组 ...
- [考试反思]1105csp-s模拟测试102: 贪婪
还是有点蠢... 多测没清空T3挂40...(只得了人口普查分20) 多测题要把样例复制粘两遍自测一下防止未清空出锅. 然而不算分... 其实到现在了算不算也不重要了吧... 而且其实T3只考虑最长路 ...
随机推荐
- iView 发布后台管理系统 iview-admin
简介 iView Admin 是基于 Vue.js,搭配使用 iView UI 组件库形成的一套后台集成解决方案,由 TalkingData 前端可视化团队部分成员开发维护.iView Admin 遵 ...
- Windows 窗体消息大全(速查)
Windows窗口消息大全,全不全自己撸 通用窗口消息 WM_NULL:--------->空消息,可检测程序是否有响应等 WM_CREATE:--------->新建一个窗口 WM_DE ...
- mac 安装 php7 及扩展
mac 版本号:10.12.3 (16D30) 安装内容 php7.0.18(配置apache),composer,phpunit,xdebug扩展,docopts,mongo和redis扩展 php ...
- windows下使用zookeeper
windows下dos窗口操作:https://blog.csdn.net/a632189007/article/details/78085858
- 【Activiti】crm与工作流的整合,一个完整的流程实例创建到任务完成的过程
1.建立任务列表页面--根据用户的nickName作为assignee查询其所拥有的任务列表 2.在任务后添加办理按钮 3.点击办理按钮,出现流程办理框,其中详细显示了该任务的相关详细信息,本实例中为 ...
- 重学HTML5的语义化
干了这么多年的前端,之前面试的时候经常会遇到面试官提问:你是如何理解HTML的语义化的? 说实话,之前遇到这个问题的时候,都是从网上找参考答案,然后记下来,用自己的语言重新组织一下,就变成自己的理解了 ...
- python之排序(sort/sorted)
大家都知道,python排序有内置的排序函数 sort() 和 高阶函数sorted() .但是它们有什么区别呢? 让我们先从这个函数的定义说起: sorted():该函数第一个参数iterable为 ...
- SSM处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
在开发中,前端同事调用后端同事写好的接口,在地址中是有效的,但在项目的ajax中,浏览器会报 "No 'Access-Control-Allow-Origin' header is pres ...
- 多线程编程-- part5 锁的种类以及辨析
java中的锁,可以分为同步锁和JUC包中的锁. 同步锁 通过synchronized关键字进行同步,实现对竞争资源的互斥访问的锁,. 原理:对于每一个对象,有且只有一个同步锁,在同一时间点,所有的线 ...
- 004-linux下配置rsyslog日志收集服务器案例 rsyslog+loganalyzer日志服务器,无法添加报表模板解决
centos6系统 client1:192.168.1.33 centos7系统 client2:192.168.1.44 centos7系统 master:192.168.1.55 配置服务端mas ...