站外题求助,TLE调了2天(ㄒoㄒ)
  • 板块题目总版
  • 楼主StarryWander
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/3/5 19:00
  • 上次更新2023/11/5 02:26:21
查看原帖
站外题求助,TLE调了2天(ㄒoㄒ)
247220
StarryWander楼主2021/3/5 19:00

题目:

代码求调:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
	int x[50],s;
};
int n,m,ans;
node a[105];
int k[105];
bool cmp(node a,node b){
	return a.s>b.s;
}
int read(){
    int f=1,x=0;
    char ss=getchar();
    while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}
    while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}
    return f*x;
}
void dfs(int r,int s){
	ans=max(ans,s);
	if(r>n) return;
	for(int i=1;i<=m;i++){
		if(k[i]<2){
			k[i]++;
			dfs(r+1,s+a[r].x[i]);
			k[i]--;
		}
		for(int j=1;j<=m;j++){
			if(i==j) continue;
			if(k[i]<2&&k[j]<2){
				k[i]++;
				k[j]++;
				dfs(r+1,s+a[r].x[i]+a[r].x[j]);
				k[i]--;
				k[j]--;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		a[i].s=0;
		for(int j=1;j<=m;j++){
			a[i].x[j]=read();
			a[i].s+=a[i].x[j];
		}
	}
	//sort(a+1,a+n+1,cmp);
	dfs(1,0);
	cout<<ans;
	return 0;
}

2021/3/5 19:00
加载中...