求助,代码TLE
  • 板块灌水区
  • 楼主furina_1013
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/14 17:38
  • 上次更新2024/3/14 20:21:02
查看原帖
求助,代码TLE
794188
furina_1013楼主2024/3/14 17:38

题目:T254919 分礼物

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int arr[30005];

int ans;
int w;
int aaa;
int cmp(int a,int b)
{
	for(int i=aaa;i>=1;i--)
	{
		if(i==b)continue;
		if(a+arr[i]<=w)return i;
	}
	return -1;
}
int main()
{
	cin>>w;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>arr[i];
	}
	sort(arr+1,arr+n+1);
	aaa=n;
	int yyy;
	for(int i=n;i>0&&aaa!=0;i--)
	{
		yyy=cmp(arr[i],i);
		if(yyy!=-1)
		{
			ans++;
			aaa-=2;
		//	cout<<arr[i]<<" "<<arr[yyy]<<endl;
			arr[i]=3000;
			arr[yyy]=3000;
		sort(arr+1,arr+n+1);
		}
		else
		{
			if(arr[i]!=3000)
			{
				ans++;	
				aaa-=1;
			//	cout<<arr[i]<<endl;
				arr[i]=3000;
				sort(arr+1,arr+n+1);
			}
			
		}
		
	}
	cout<<ans;
	return 0;
}  

大致思路:先排序,

再从最后向前找

函数CMP是寻找arr[i]最适配的数,进行分组

2024/3/14 17:38
加载中...