只AC了一个,求助,急急急
查看原帖
只AC了一个,求助,急急急
1096037
TTdd110517楼主2024/8/7 20:34
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100000],b[1000][1000],t[100000],minn=5e9;
bool cmp[100000],p[100000];
void dfs(int id,int x)
{
	if(id<1){
		long long c=0;
		for(int i=1;i<=n;i++){
			if(t[i]>=a[i]) c++;
		}
		if(minn>x&&c==n){
			
			minn=x;
			for(int i=1;i<=m;i++){
				p[i]=cmp[i];
			}
		}
		return;
	}
	dfs(id-1,x);
	for(int i=1;i<=n;i++){
		t[i]=t[i]+b[id][i];
	}
	cmp[id]=1;
	dfs(id-1,x+1);
	for(int i=1;i<=n;i++){
		t[i]=t[i]-b[id][i];
	}
	cmp[id]=0;
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>b[i][j];
		}
	}
	dfs(m,0);
	cout<<minn<<" ";
	for(int i=1;i<=n;i++){
		if(p[i]==1) cout<<i<<" ";
	}
	return 0;
} 
2024/8/7 20:34
加载中...