买瓜--dfs‘剪枝

1.后缀和剪枝

2.排序大数在前剪枝

3.枚举3种情况

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=2005;
typedef long long ll;
const double MAX=1e10;
int n,m;
double a[32];
double s[32];
int mi=-1;
int c=0;
void dfs(double w,int d,int x)
{
	if(w==m)
	{
		if(!c) mi=d,c++;
		else mi=min(d,mi);
	}
	if(w+s[x+1]<m) return;
	if(w>m) return;
	if(x>n) return;
	dfs(w+a[x+1],d,x+1);
	dfs(w,d,x+1);
	dfs(w+a[x+1]/2,d+1,x+1);
	
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,greater<double>());
for(int i=n-1;i>=0;i--) s[i]=s[i+1]+a[i];
dfs(a[0],0,0);
dfs(0,0,0);
dfs(a[0]/2,1,0);
cout<<mi;
return 0;
}
相关推荐
Cx330❀5 分钟前
《C++ STL:vector类(下)》:攻克 C++ Vector 的迭代器失效陷阱:从源码层面详解原理与解决方案
开发语言·数据结构·c++·经验分享·算法
bawangtianzun24 分钟前
树的重心与直径 性质
数据结构·c++·学习·算法
山猪打不过家猪1 小时前
(一)算法
java·开发语言·算法
乌萨奇也要立志学C++1 小时前
【洛谷】6 道题吃透堆的应用:模板堆、第 k 小、最小函数值等全攻略
算法
合作小小程序员小小店2 小时前
web网页开发,在线%推荐算法学院培养计划,图书推荐,基于Python,FlaskWeb,用户和物品推荐MySql
python·mysql·算法·flask·推荐算法
Cx330❀3 小时前
《C++ STL:vector类(上)》:详解基础使用&&核心接口及经典算法题
开发语言·c++·经验分享·算法
那我掉的头发算什么3 小时前
【数据结构】二叉树的高频热门面试题大全
java·开发语言·数据结构·python·算法·链表·intellij idea
遇安.YuAn3 小时前
JAVA之求平方根
java·开发语言·算法
禁默4 小时前
机器学习基础入门(第三篇):监督学习详解与经典算法
学习·算法·机器学习
sensen_kiss4 小时前
INT305 Machine Learning 机器学习 Pt.1 导论与 KNN算法
人工智能·算法·机器学习