玄关蒟蒻求助(80TLE)
查看原帖
玄关蒟蒻求助(80TLE)
1144555
gdfz02sjy楼主2024/10/14 17:48
#include <bits/stdc++.h>
using namespace std;
long long a,b,c,d,ans=LLONG_MAX;
long long yl_money[505],yl_rl[505];//饮料的价格和解决的口渴值
void dfs(long long id,long long rl,long long money){
	//第几个饮料、还剩的饮料的量以及现在所需的钱
	if(id==a||rl<=0){
		//退出条件 
		if(rl<=0){
			//再次判断
			 ans=min(ans,money);
		}
		return ;
	}
	//开始查找
	dfs(id+1,rl,money);//不增加
	if(money+yl_money[id]<ans)dfs(id+1,rl-yl_rl[id],money+yl_money[id]);//增加 

	return ;
}
int main(){
	cin>>a>>b;
	for(int i=0;i<a;i++){
		cin>>yl_money[i]>>yl_rl[i];
		c+=yl_rl[i];
		d+=yl_money[i];
	}
	if(c<b){
		cout<<"no solution";
		return 0;
	}
	if(c==b){
		cout<<d;
		return 0;
	}
	//特殊情况判断完成
	//c留着,搜索的时候要是去掉这个就不够需要的量了就可以跳过搜索 
	dfs(0,b,0);
	cout<<ans;
	return 0;
}

#2、#3TLE

2024/10/14 17:48
加载中...