[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只考虑最长路 ...
随机推荐
- redis 学习(12)-- redis 发布订阅
redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(channel) 如图所示: 发布者发布消息到频道,订阅了频道的订阅者可以收到消息,订阅 ...
- Keepalived+Nginx+Tomcat 实现高可用Web集群
https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...
- 部署node节点组件
部署node节点组件 mv kubelet kube-proxy /opt/kubernetes/bin chmod +x /opt/kubernetes/bin/* && chmod ...
- 原生JS+CSS实现日期插件
笔者最近在学习Element UI,觉得它提供的日期选择器既简单又美观,于是仿照着写了一个日期插件.笔者使用到的技术有ES5.CSS和HTML,控件兼容IE10+和谷歌浏览器.有一点需要注意,笔者使用 ...
- go语言的学习之路
一.学习前言 (1)go语言的介绍 1.解释型语言:python PHP java scripy (前端) 2.编译型语言:C C++ C#(微软开发) java(sun公司开发 后来被甲 ...
- Jenkins+GitHub 项目环境搭建(一)
安装Jenkins yum install -y java-1.8.0-openjdk wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkin ...
- jQuery获取当前按钮的id
function test(e) { $(e.target).attr('id') } // 记得带上点击事件
- centos7 yum快速安装LNMP
1.安装nginx yum install nginx ##开启nginx service nginx start 2.安装MYSQL yum localinstall http://dev.mysq ...
- automake中Makefile.am和configure.ac的格式及编译过程
step1:写Makefile.am step2:执行autoscan,会生成configurae.scan,修改configure.scan内容之后,命名为configure.ac step3:执行 ...
- Hive 函数(六)
Hive函数 Hive中提供了非常丰富的运算符和内置函数支撑,具体操作如下: 1.内置运算符 1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回 ...