20pts求助
查看原帖
20pts求助
508032
int08楼主2023/9/22 18:03
#include<bits/stdc++.h>
using namespace std; 
int n,h[1234567],q,i,j,d[1234567],k,p[1234567],head,tail,an;
int main()
{
	cin>>n;
	for(i=1;i<=n;i++) scanf("%d",&h[i]);
	cin>>q;
	for(int ac=1;ac<=q;ac++)
	{
		cin>>k;
		head=1;tail=1;p[1]=1;
		for(i=2;i<=n;i++)
		{
			while(i-p[tail]>k) tail++;
			an=d[tail]+(h[p[tail]]>h[i]?0:1);
			while((an<d[head]||an==d[head]&&h[i]<=h[p[head]])&&head>=tail) head--;
			head++;d[head]=an,p[head]=i;
		}
		cout<<an<<endl;
	}
}

看到好多人和我错的一模一样,改了一下就对了,但是我没找到啊

2023/9/22 18:03
加载中...