40分求助Orz
查看原帖
40分求助Orz
1180231
H_dream楼主2024/5/15 20:16
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=20,MAX=1e9+10;
int n,a[N],b[N],ans=MAX;//a表示酸度,b表示苦度
void dfs(int cnt,int m,int s,int k,int t){//cnt表示数量,m表示可选数量,s表示酸度,k表示苦度,t保证升序排列
	if(cnt>0) ans=min(ans,abs(s-k));
	if(cnt==m) return ;
	for(int i=t;i<=n;++i){
		dfs(cnt+1,m,s*a[i],k+b[i],t+1);
	}
	return ;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;++i)
		cin>>a[i]>>b[i];
	for(int i=1;i<=n;++i){
		dfs(0,i,1,0,1);
	}
	cout<<ans<<endl;
	return 0;
}

样例#4:
输入:
7
7 1297
9 1230
4 5780
4 1235
3 7652
8 979
10 977

输出:
439

2024/5/15 20:16
加载中...