【杭电多校2020】第二场1010.Lead of Wisdom

题目链接

思路:

暴…暴力?

代码:

#include
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N=105;
const double eps=1e-8;
const int mod=1e9+7;
const int inf=0x7fffffff;
const double pi=3.1415926;
int n,m,cnt[N],nxt[N],e[N][N][5],ans;
void dfs(int x,int a,int b,int c,int d)
{
	if(x>m)
	{
		int temp=1LL*a*b*c*d;
		ans=max(ans,temp);
		return ;
	}
	if(!cnt[x])
	{
		dfs(nxt[x],a,b,c,d);
		return ;
	}
	int n=cnt[x];
	for(int i=1;i<=n;i++)
	{
		dfs(x+1,a+e[x][i][0],b+e[x][i][1],c+e[x][i][2],d+e[x][i][3]);
	}
}
signed main()
{
    IOS;
	int t;
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		int x;
		memset(cnt,0,sizeof cnt);
		for(int j=0;j<n;j++)
		{
			cin>>x;
			cnt[x]++;
			for(int i=0;i<4;i++)
			{
				cin>>e[x][cnt[x]][i];
			}
		}
		x=m+1;
		for(int i=m;i;i--)
		{
			nxt[i]=x;
			if(cnt[i]) x=i;
		}
		ans=100000000;
		dfs(1,100,100,100,100);
		cout<<ans<<endl;
	}
	return 0;
}

你可能感兴趣的:(思维)