t3为啥0分
  • 板块学术版
  • 楼主MujicaSaki摸鱼
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/14 18:07
  • 上次更新2023/11/2 13:52:00
查看原帖
t3为啥0分
558597
MujicaSaki摸鱼楼主2023/10/14 18:07
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5; 
int t,n,r[N],c[N],s,p[N];
bool vis[N];
void dfs(int now,int P[N],bool f[N])
{
	if(now-1==n)
	{
		//cout<<now<<endl;
		int S=0;
		for(int i=1;i<=n;i++)
		{
		//	cout<<P[i]<<" ";
			if(P[i]>i) S+=c[P[i]];
			else if(P[i]<i) S-=c[P[i]];
		}
		/*cout<<endl;
		cout<<S<<endl;*/
		s=max(S,s);
	}
	for(int i=1;i<=n;i++)
	{
		if(!f[i])
		{
			//cout<<f[i]<<endl;
			//for(int j=1;j<=n;j++) cout<<P[j]<<" ";
			//cout<<endl;
			f[i]=1;
			P[now]=i;
			dfs(now+1,P,f);
			f[i]=0;
		}
	}
}
int main()
{
	cin>>t;
	while(t--)
	{
		s=0;
		cin>>n;
		for(int i=1;i<=n;i++) cin>>r[i];
		for(int i=1;i<=n;i++) cin>>c[i];
		int T=0;
		for(int i=1;i<n;i++) if(c[i]==c[i+1]) T++;
		if(T+1==n)
		{
			s=abs(c[1])*(n-1);
			//cout<<s<<endl;
		}
		else dfs(1,p,vis);
		cout<<s<<endl; 
	}
}

应该有分啊

2023/10/14 18:07
加载中...