40pts求助
查看原帖
40pts求助
264463
添哥楼主2021/10/30 16:04

贪心做法

#include<iostream>
using namespace std;
int main()
{
	int n,q;
	cin>>n;
	int d[n+1];
	for(int i=1;i<=n;i++)
	{
		cin>>d[i];
	}
	cin>>q;
	while(q--)
	{
		int k,i=1,sum=0;
		cin>>k;
		while(i<n)
		{
			if(i+k>=n)
			{
				if(d[n]>=d[i])
				{
					sum++;
				}
				i=n;
			}
			else
			{
				bool flag=1;
				for(int j=i+k;j>i;j--)
				{
					if(d[j]<d[i])
					{
						flag=0;
						i=j;
						break;
					}
				}
				if(flag)
				{
					int maxn=0,m;
					for(int j=i;j<=i+k;j++)
					{
						if(maxn<=d[j])
						{
							maxn=d[j];
							m=j;
						}
					}
					sum++;
					i=m;
				}
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}
2021/10/30 16:04
加载中...