1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int dp[N],n,k,a[N]; struct node{int v,id,h;}; void solve() { cin>>k;memset(dp,0,sizeof(dp)); deque<node>q; q.push_back({0,1,a[1]}); for(int i=2;i<=n;i++) { while(!q.empty()&&i-q.front().id>k)q.pop_front(); dp[i]=q.front().v+(q.front().h<=a[i]); while(!q.empty()&&q.back().v+(q.back().h<a[i])>dp[i])q.pop_back(); q.push_back({dp[i],i,a[i]}); } cout<<dp[n]<<'\n'; } int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; int q;cin>>q; while(q--)solve(); return 0; }
- 1
信息
- ID
- 5496
- 时间
- 10000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 9
- 已通过
- 4
- 上传者