60分和ACcode 有啥区别
  • 板块学术版
  • 楼主TsH_GD
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/18 16:12
  • 上次更新2023/11/4 03:23:54
查看原帖
60分和ACcode 有啥区别
559502
TsH_GD楼主2021/10/18 16:12
#include<bits/stdc++.h>
#define INF 100000
using namespace std;
int n,v,a[31],b[31],ans=INF,ga,gb;
bool c[31];
void dfs(int k){
	if(ga+gb>=v) ans=min(ans,abs(ga-gb));
	if(ans==0)	return;
	for(int i=k;i<=n;i++)if(c[i]==0){
		c[i]=1;
		ga+=a[i];
		gb+=b[i];
		dfs(i+1);
		ga-=a[i];
		gb-=b[i];
		c[i]=0;
	}
}
int main(){
	scanf("%d%d",&n,&v);
	for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
	for(int i=1;i<=n;i++){
		c[i]=1;
		dfs(0);
		c[i]=0;
	}
	if(ans!=INF) cout<<ans<<endl;
	else cout<<-1<<endl;
}
/*60分
#include<bits/stdc++.h>
#define INF 100000
using namespace std;
int n,v,a[3100],b[3100],ans=INF;
bool c[3100],f;
void dfs(int x,int y){
	if(x+y>=v){
		f=1;
		ans=min(ans,abs(x-y));
	}
	if(ans==0){
		return;
	}
	for(int i=1;i<=n;i++){
		if(c[i]==0){
			c[i]=1;
			dfs(x+a[i],y+b[i]);
			c[i]=0;
		}
	}
}
int main(){
	scanf("%d%d",&n,&v);
	for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
	for(int i=1;i<=n;i++){
		c[i]=1;
		dfs(a[i],b[i]);
		c[i]=0;
	}
	if(f) cout<<ans<<endl;
	else cout<<-1<<endl;
}
*/
/*20分
#include<bits/stdc++.h>
#define INF 100000
using namespace std;
int n,v,a[3100],b[3100],ans=INF;
bool c[3100],f;
void dfs(int x,int y,int sum){
	if(x+y>=v){
		f=1;
		sum=abs(x-y);
		ans=min(ans,sum);
	}
	for(int i=1;i<=n;i++){
		if(c[i]==0){
			c[i]=1;
			dfs(x+a[i],y+b[i],sum+a[i]+b[i]);
			c[i]=0;
		}
	}
}
int main(){
	scanf("%d%d",&n,&v);
	for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
	for(int i=1;i<=n;i++){
		c[i]=1;
		dfs(a[i],b[i],a[i]+b[i]);
		c[i]=0;
	}
	if(f) cout<<ans<<endl;
	else cout<<-1<<endl;
}
*/
2021/10/18 16:12
加载中...