题目:传送门
题意: 我们拥有一本书,书中每一页都有一个谜题,在后面的页或当前页会有解释。Ivan每天都会看这本书,而且他还有个习惯,就是每天要把看到的所有谜题的题解看到才会停下来,问Ivan看完这本书需要多少天.
样例输入 | 样例输出 |
---|---|
9 1 3 3 6 7 6 8 8 9 | 4 |
思路: 很明显,每天看到的最多页数,就是之前看的页数中谜题解释最大的页数。for遍历一遍就好了。
代码如下:
#include <iostream>
using namespace std;
int a[10010];
int vis[10010];
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++) {
cin>>a[i];
}
int ans = 0;
int now = 1;
int to = -1;
while(now<=n) {
if(to == -1) { // 表示是新的一天.
ans++;
to = a[now];
}
to = max(a[now],to);//这里要先更新最大值,再判断,否则会wa
if(now == to) {//当已经到达最大天数的时候,初始化to
//cout<<to<<endl;
to = -1;
}
now++;
}
cout<<ans<<endl;
return 0;
}