爆搜最香了。
感觉有点像01背包(?
对于每件事,我们可以选择干或者不干,如果干就将好感值处理一下,当所有的事都搜完之后,记录最小值(minn) 。
最终答案就是(minn) 了。
(sf code)
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int a[105],b[105],n,v,minn=1e9;
void dfs(int x,int y,int k)
{
if(minn==0)
return ;//
if(k>n)
{
if(x+y>=v)
minn=min(minn,abs(x-y));
return;//搜完了,就记录minn
}
dfs(x+a[k],y+b[k],k+1);//取
dfs(x,y,k+1);//不取
return ;
}
int main()
{
scanf("%d%d",&n,&v);
for(int i=1;i<=n;++i)
scanf("%d%d",&a[i],&b[i]);
dfs(0,0,1);//一开始好感值都是0
if(minn<1e9)
printf("%d
",minn);
else
printf("-1
");
return 0;
}