rt 正解应该是dp+单调队列
但是我这个贪心过了 还是最优解 我不理解
还有这个复杂度很玄学 不知道是啥 感觉可以被卡
#include<bits/stdc++.h>
#define ll long long
#define inf 1e9
#define ls k*2
#define rs k*2+1
using namespace std;
const int asd=1e6+121;
int n,q,k;
int a[asd],dp[asd],val[asd];
void tanxin(){
int ans=0;
for(int i=1;i<=n;){
if(i+k>=n){
if(val[i]>=val[n])
ans++;
cout<<ans<<endl;
return;
}
int id=0,mi=inf;
for(int j=i+k;j>=i+1;j--){
if(val[j]>val[i]&&val[j]<mi){
id=j;
mi=val[j];
}
}
if(mi==inf){
int ma=inf;
for(int j=i+k;j>=i+1;j--)
if(val[j]<ma){
ma=val[j];
id=j;
}
ans++,i=id;
}
else
i=id;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1,j=n;i<=n,j>=1;i++,j--)
val[i]=a[j];
cin>>q;
while(q--){
cin>>k;
tanxin();
}
return 0;
}