买瓜--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;
}
相关推荐
csdn_aspnet1 小时前
C# 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
算法·c#
梁下轻语的秋缘2 小时前
C/C++滑动窗口算法深度解析与实战指南
c语言·c++·算法
iFulling2 小时前
【数据结构】第八章:排序
数据结构·算法
一只鱼^_2 小时前
力扣第448场周赛
数据结构·c++·算法·leetcode·数学建模·动态规划·迭代加深
寂空_2 小时前
【算法笔记】动态规划基础(二):背包dp
笔记·算法·动态规划
搏博3 小时前
神经网络在专家系统中的应用:从符号逻辑到连接主义的融合创新
人工智能·深度学习·神经网络·算法·机器学习
Eric.Lee20213 小时前
数据集-目标检测系列- 印度人脸 检测数据集 indian face >> DataBall
人工智能·算法·目标检测·计算机视觉·yolo检测·印度人脸检测
E___V___E3 小时前
线性DP(动态规划)
算法·动态规划
vibag3 小时前
启发式算法-禁忌搜索算法
java·算法·启发式算法·禁忌搜索
白露秋484 小时前
数据结构——算法复杂度
数据结构·算法·哈希算法