买瓜--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;
}
相关推荐
gihigo19988 小时前
matlab 基于瑞利衰落信道的误码率分析
算法
foxsen_xia9 小时前
go(基础06)——结构体取代类
开发语言·算法·golang
foxsen_xia9 小时前
go(基础08)——多态
算法·golang
leoufung9 小时前
用三色 DFS 拿下 Course Schedule(LeetCode 207)
算法·leetcode·深度优先
im_AMBER10 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
C雨后彩虹10 小时前
机器人活动区域
java·数据结构·算法·华为·面试
MarkHD10 小时前
车辆TBOX科普 第53次 三位一体智能车辆监控:电子围栏算法、驾驶行为分析与故障诊断逻辑深度解析
算法
苏小瀚11 小时前
[算法]---路径问题
数据结构·算法·leetcode
月明长歌11 小时前
【码道初阶】一道经典简单题:多数元素(LeetCode 169)|Boyer-Moore 投票算法详解
算法·leetcode·职场和发展
wadesir11 小时前
C语言模块化设计入门指南(从零开始构建清晰可维护的C程序)
c语言·开发语言·算法