题解 P2080 增进感情

\(\sf Link\)

爆搜最香了。

感觉有点像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\n",minn);
    else
        printf("-1\n");
    return 0;
}
posted @ 2020-08-09 14:50  Callous_Murder  阅读(72)  评论(0编辑  收藏  举报