acw165. 小猫爬山-DFS剪枝与优化

题目

思路

  1. 暴搜顺序:从前往后依次枚举每只小猫,枚举当前这只小猫应该放在哪一辆车上,递归完n层之后,就可以知道所有方案中的最少车辆总数
  2. 剪枝的情况:
    1. 优化搜索顺序:大部分情况下,应该优先搜索分支较少的节点
    2. 排除等效冗余
    3. 可行性剪枝
    4. 最优性剪枝
    5. 记忆化搜索(DP)
  3. 本题的剪枝:
    1. ​​​​​​​优化搜索顺序:优先放重猫
    2. 可行性剪枝:如果放入当前的猫,车的重量超出,则舍弃该方案
    3. 最优性剪枝:如果当前车的数量已经大于等于ans(符合条件的最少车的数量)

代码

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=20;

int n,m;
int w[N];
int sum[N]; //当前猫的重量
int ans=N;

void dfs(int u,int k){ // u:当前猫的数量,k:当前车的数量
    //最优性剪枝
    if(k>=ans)return ; //当前车的数量大于等于ans
    
    if(u==n){
        ans=k;
        return;
    }
    //枚举当前这只猫可以放到哪辆车上去
    for(int i=0;i<k;i++){
        if(sum[i]+w[u]<=m){ //可行性剪枝
            sum[i]+=w[u];
            dfs(u+1,k);
            sum[i]-=w[u];//恢复现场
        }
    }
    //新开一辆车
    sum[k]=w[u];
    dfs(u+1,k+1);
    sum[k]=0; //恢复现场
}

int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>w[i];
    //优化搜索顺序
    sort(w,w+n);
    reverse(w,w+n);
    
    dfs(0,0);
    
    cout<<ans<<endl;
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624447.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全 | 开源入侵防御系统 Snort

目录 Snort 概要 入侵预防系统模式 数据包记录器和嗅探器模式 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; Snort 概要 Snort 概要 是世界上最重要的开源入…

GPT-4o omni全能 openAI新flagship旗舰模型,可以通过音频、视觉、文本推理。自然人机交互,听懂背景噪音、笑声、歌声或表达情感,也能输出。

新旗舰模型GPT-4o GPT-4o 是openAI新flagship旗舰模型&#xff0c;可以通过音频、视觉、文本推理reason&#xff0c;也能组合输出text, audio, and image。 接受文本、音频和图像的任意组合作为输入&#xff0c;并生成文本、音频和图像输出的任意组合。 速度快 2 倍&#xff…

【随笔】Git 高级篇 -- 缓存远端数据命令的参数 git fetch(三十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

数据可视化(十一):Pandas餐饮信息表分析——交叉表、离群点分析,多维分析等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

学习古琴律学的好东西,帮您从基因里学古琴

《从基因里学懂古琴》是一本关于古琴律学的著作&#xff0c;作者通过基因的角度来解读古琴音乐的奥秘和美妙。古琴作为我国传统文化的瑰宝之一&#xff0c;具有悠久的历史和独特的音乐风格&#xff0c;但其律学原理一直以来都是一个谜。本书从基因的角度探讨了古琴音乐的律学特…

postman 使用教程

1. get 请求 &#xff1f;号后为 get 请求的参数 参数之间用符号"&" 分隔。 假设url 为&#xff1a;http://10.71.7.101/cgi-bin/gw-config.cgi?methodgetway_param&t1715658871647 复制进来到postman的地址栏 后 &#xff1f;后面的参数会自动添加到参…

服务器利用率的神器脚本

在服务器管理的过程中&#xff0c;了解服务器的各项性能指标是至关重要的。无论是CPU的负载情况&#xff0c;内存使用情况&#xff0c;还是硬盘的存储空间以及TCP连接状态&#xff0c;这些都是我们判断服务器健康状态和性能的重要依据。然而&#xff0c;手动一项项去检查这些指…

OpenAI 深夜发布 GPT-4o,强到让人恐怖,这还是AI?!又一批人将面临失业...

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 看了 OpenAI 最新的…

祝贺誉天杨峰老师率先通过HCIE-openEuler认证!

热烈祝贺誉天教育杨峰老师4月29日成功通过HCIE-openEuler认证&#xff01; 杨峰老师HCIE-openEuler证书 作为HCIP-openEuler全国首位通过者&#xff0c;杨峰老师凭借他深厚的专业知识、丰富的实践经验和不懈的努力&#xff0c;成功通过了华为认证的HCIE-openEuler专家级认证&a…

Edge(微软)——一款充满创新精神的浏览器

随着科技的不断进步&#xff0c;互联网浏览器已经成为我们日常生活中不可或缺的工具。在这个领域&#xff0c;微软Edge作为一款新型的浏览器&#xff0c;凭借其独特的功能和优秀的性能&#xff0c;逐渐在市场上占据了一席之地。本文将深入探索微软Edge的特点、优势以及它如何改…

渗透神器:burpsuit教程

前言&#xff1a;释疑解惑 《BP使用教程一》发布后&#xff0c;后台收到了许多小伙伴的私信问BP是怎么汉化的&#xff0c;在这里统一为大家解答一下。 BP的汉化依赖于汉化jar包&#xff0c;在启动时引入汉化包即可&#xff0c;废话不多说&#xff0c;直接上命令&#xff1a; …

富锂锰基材料极具发展潜力 我国产业化进程加速

富锂锰基材料极具发展潜力 我国产业化进程加速 富锂锰基材料以锰元素为主&#xff0c;我国锰资源较丰富&#xff0c;相比于铁锂材料、高镍三元材料&#xff0c;富锂锰基材料具有一定的降本潜力。此外富锂锰基材料在能量密度、充放电倍率等方面也具有明显优势。富锂锰基材料是富…

【计算机毕业设计】ssm框架的购物网站

现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统 数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本网上超市系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&#xff…

Fortran 最全介绍

省流&#xff1a; Fortran &#xff08;Formula Translator&#xff0c;“公式翻译器”&#xff09;&#xff0c;由John Backus发明。1954年在纽约正式发布&#xff0c;称为FORTRAN Ⅰ。1957年第一个FORTRAN编译器在IBM704计算机上实现&#xff0c;FORTRAN I在IBM704系统上运行…

nodejs里面的 http 模块介绍和使用

Node.js的HTTP模块是一个核心模块&#xff0c;它提供了很多功能来创建HTTP服务器和发送HTTP请求。 http.Server是一个基于事件的http服务器&#xff0c;内部是由c实现的&#xff0c;接口是由JavaScript封装。 http.request是一个http客户端工具。 用户向服务器发送数据。 创…

泰山众筹:创新电商模式引领共赢新潮流

一、泰山众筹模式创新解读 泰山众筹&#xff0c;这一电商领域的创新模式&#xff0c;通过巧妙地将产品销售与积分众筹相结合&#xff0c;为用户和平台带来了双赢的局面。在泰山众筹模式下&#xff0c;用户购买产品的同时能够积累积分&#xff0c;这些积分可以作为参与众筹的筹…

初探 JUC 并发编程:Java 中的并发队列 ConcurrentLinkedQueue 源码级解析

第七部分&#xff1a;Java 并发包中并发队列解析 7.1&#xff09;ConcurrentLinkedQueue 原理探究 7.1.1&#xff09;类图结构 ConcurrentLinkedQueue 底层通过单向链表的方式实现&#xff0c;其中有两个 volatile 类型的 Node 节点用来表示队列的首、尾节点。 public Concu…

市场对节能高效电机需求不断增长 变频器具有广阔发展空间

市场对节能高效电机需求不断增长 变频器具有广阔发展空间 变频器是利用变频技术与微电子技术&#xff0c;通过改变电机工作电源频率方式来控制交流电动机的电力控制设备&#xff0c;主要由制动单元、检测单元、微处理单元等部分构成。变频器能够根据需要调整电机的转速&#xf…

如何基于可靠事件模式实现最终一致性?

今天我们一起来探讨一个分布式环境下的常见问题,这个问题与数据的一致性有关。那么,什么是数据一致性呢?要回答这个问题,需要我们回顾一下单块系统和分布式系统中对于数据处理的不同需求。 我们知道,传统的单块系统通常都只与一个数据库进行交互,所有的数据处理过程都位于…