30求调
查看原帖
30求调
1453107
linjiacheng2030楼主2024/11/23 09:26
#include<bits/stdc++.h>
using namespace std;
int m,c,s,ans,sum,t[210],a[210],maxx=-1;
int main()
{
	scanf("%d%d%d",&m,&s,&c);
	for(int i=1;i<=c;i++)
	{
		scanf("%d",&a[i]);
		t[a[i]]++;//统计哪里有牛(t[a[i]]=1),哪里没牛(t[a[i]]=0)
	}
	sort(a+1,a+c+1);
	ans=c;//先用一块木板盖住所有牛棚
	if(m>=c)
	{
		printf("%d",c);
		return 0;
	}
	m-=1;//已经用过一块
	for(int i=1;i<=a[c];i++)
	{
		if(t[a[i]]!=0)
		{
			break;
		}
		else
		{
			for(int j=1;j<=a[c];j++)
			{
				if(t[a[i]]==0)
				{
					sum++;
				}
				else
				{
					maxx=max(maxx,sum);//找出最长的没有住牛的连续牛棚
					sum=0;
					continue;
				}
			}
			ans-=maxx;//掏空这段木版
			m--;//每次掏空都会使木板总数增加一
		}
	}
	printf("%d",ans);
	return 0;
}
2024/11/23 09:26
加载中...