首先設在整個數組內可以直接到達n+1的最左邊的點點為x 則x+1-n區間都可以一次或2次到達n+1 如果某一個點i可以一次到達n+1,則其i+a[i]大於等於n+1 否則可以先跳到i再跳到n+1,需要2步 然後將右邊界r賦值為x 繼續在區間[1,r-1]找一個可以直接到達x的點y 則區間[y,r-1]中能夠直接跳到r的點需要f[r]步,否則需要f[r]+1步 以此類推 #include<bits/stdc++.h> using namespace std; int n,m,a[100010],…