求助!第五个点TLE
查看原帖
求助!第五个点TLE
881987
txy2012楼主2023/10/29 13:20

不知道如何剪枝:

#include<bits/stdc++.h>
using namespace std;
int n,u,mini=1e9,a1=0,b1=0,a[35],b[35],totol=0;
void dfs(int x){
	if(x>n){
		if(a1+b1>=u){
			mini=min(mini,abs(a1-b1));
			totol++;
		}
		return ;
	}
	dfs(x+1);
	a1+=a[x];
	b1+=b[x];
	dfs(x+1);
	a1-=a[x];
	b1-=b[x];
}
int main(){
	scanf("%d%d",&n,&u);
	for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]);
	dfs(1);
	if(totol>=1)printf("%d",mini);
	else printf("-1");
	return 0;
}

https://www.luogu.com.cn/record/132225803
2023/10/29 13:20
加载中...