P2036 PERKET

思路:
对n中配料:选/不选,共2^n种可能——二进制枚举
#include<bits/stdc++.h>
using ll=long long;
using namespace std;
ll n,cs=1,cb,ans=INT_MAX;//current-sour current-bitter
struct food{
ll s,b;
}fd[15];
int main()
{
cin>>n;
for(ll i=1;i<=n;++i){
cin>>fd[i].s>>fd[i].b;
}
for(ll i=0;i<(1<<n);++i){//枚举0~2^n
if(i==0) continue;//至少选一种食材
cs=1,cb=0;
for(ll j=0,k=n;j<n;++j,--k){//对i进行拆位
if((i>>j)&1==1){
cs*=fd[k].s;
cb+=fd[k].b;
}
}
ans=min(abs(cs-cb),ans);
}
cout<<ans;
return 0;
}

浙公网安备 33010602011771号