TLE on #2 && #9
查看原帖
TLE on #2 && #9
1183074
xzy_AK_IOI楼主2024/5/11 16:04
#include<bits/stdc++.h>
using namespace std;
int v,g;
int p[114];
int sum[114];
int pai[114];
int l[114][514];
bool u[114];
bool pan=0;
void dfs(int b,int t)
{
	if (pan)
	{
		return ;
	}
	if (b>t)
	{
		memset(sum,0,sizeof(sum));
		for (int i=1;i<=t;i++)
		{
			for (int j=1;j<=v;j++)
			{
				sum[j]+=l[pai[i]][j];
			}
		}
		bool pan2=1;
		for (int i=1;i<=v;i++)
		{
			if (sum[i]<p[i])
			{
				pan2=0;
				break;
			}
		}
		if (pan2)
		{
			pan=1;
			cout<<t<<" ";
			for (int j=1;j<=t;j++)
			{
				cout<<pai[j]<<" ";
			}
			return ;
		}
		return ;
	}
	for (int i=1;i<=g;i++)
	{
		if (!u[i])
		{
			u[i]=1;
			pai[b]=i;
			dfs(b+1,t);
			u[i]=0;
		}
	}
}
int main()
{
	cin>>v;
	for (int i=1;i<=v;i++)
	{
		cin>>p[i];
	} 
	cin>>g;
	for (int i=1;i<=g;i++)
	{
		for (int j=1;j<=v;j++)
		{
			cin>>l[i][j];
		}
	}
	for (int i=1;i<=g;i++)
	{
		memset(u,0,sizeof(u));
		dfs(1,i);
		if (pan)
		{
			return 0;
		}
	}
	return 0;
}

救救我!!

2024/5/11 16:04
加载中...