题目链接:点击查看

题目大意:给出n只小猫坐索道下山,索道上缆车的最大承重为W,而n只小猫的重量分别为C1,C2……Cn,要求每辆缆车上的小猫重量之和不能超过W,问最少需要几个缆车才能将所有的小猫都运下山?

题目分析:简单dfs,有一点需要注意一下,因为重量小的肯定比重量大的好找位置,所以我们对体重降序排个序,可以更快找到最优解,还有一个剪枝是,当前的结果如果大于最优解立马回溯,因为继续搜索下去是肯定无法更新最优解的

还是得多写点dfs来找找手感,不然一遇到树上的题目就傻眼了

代码:

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<deque>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=20;int n,w,ans;int a[N],b[N];//a[i]:每只小猫的体重 b[i]:每个缆车当前的承重bool cmp(int a,int b)
{return a>b;
}void dfs(int pos,int cnt)//pos:第pos只小猫 cnt:用了cnt个缆车
{if(cnt>=ans)//若当前答案大于最优解,直接回溯return;if(pos==n+1)//若全部小猫已经分配完毕,并且当前答案比最优解还小,更新最优解{ans=cnt;return;}for(int i=1;i<=cnt;i++)//遍历一下之前cnt个缆车能不能容得下第pos只小猫{if(b[i]+a[pos]<=w)//若能{b[i]+=a[pos];//更新缆车承重dfs(pos+1,cnt);//继续搜索b[i]-=a[pos];//更新缆车承重}}b[cnt+1]+=a[pos];//若前cnt个缆车不能容得下第pos只小猫,需要单独坐一辆dfs(pos+1,cnt+1);b[cnt+1]-=a[pos];
}int main()
{while(scanf("%d%d",&n,&w)!=EOF){memset(b,0,sizeof(b));for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+1+n,cmp);//优化搜索顺序ans=n;初始化最优解的答案为n,即每个小猫分别坐一辆缆车dfs(1,0);printf("%d\n",ans);}return 0;
}

AcWing - 165 小猫爬山(dfs)相关推荐

  1. AcWing 165 小猫爬山

    题目描述: 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. ...

  2. 165. 小猫爬山【爆搜+剪枝】

    #include<bits/stdc++.h> using namespace std; const int N=25; int w[N],s[N],n,m,ans,len=0; void ...

  3. DFS剪枝优化 小猫爬山 数独

    DFS剪枝策略总结 优化搜索顺序 优先搜索分支数少(剩余选择少)的情况 排除等效冗余 若对顺序没有要求 可以将排列转化为组合 可行性剪枝 不合法的情况不进行搜索 最优化剪枝 若当前的"消耗& ...

  4. DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山

    DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_&l ...

  5. 洛谷 P1361 小猫爬山

    P1361 小猫爬山 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道 ...

  6. tyvj P2018 「Nescafé26」小猫爬山 解题报告

    P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...

  7. acwing165.小猫爬山

    做题心得Acwing165.小猫爬山 题目 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰 ...

  8. 【AcWing 165】 小猫爬山 简单dfs + 剪枝优化

    翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆 ...

  9. 小猫爬山(DFS+剪枝)

    目录 题目描述 分析 优化1 优化2 Code 题目描述 翰翰和达达饲养了 N N N 只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕& ...

最新文章

  1. 蚂蚁森林合种计划(2020.10.23,7天有效,每周更新)
  2. pytorch 打印模型参数
  3. Scrapy爬取妹子图保存到不同目录下
  4. 编写Tesseract的Python扩展
  5. log4j2.xml 文件
  6. 开发中的“软”与“硬”:高画质移动游戏开发之道
  7. js获取网页高度和宽度(备份)
  8. 如何将字节数组转换为十六进制字符串,反之亦然?
  9. C#委托四(匿名方法)
  10. 软件测试报告怎么编写,最新软件测试模板推荐【建议收藏】
  11. 直播答题狂撒币,这些“AI开挂神器”如何在10秒内算出正确答案?
  12. 一年级上册计算机教学计划,人教版数学一年级上册教学计划
  13. 打开 igv java_【2019-04-23】 IGV打不开的处理办法
  14. 纵横杯2020 web wp
  15. Unity 水波纹Shader
  16. 【11g】屏蔽敏感数据 (Masking Sensitive Data)
  17. Android源码编译(Ubuntu 14.04)
  18. 2020年了,BAT都组建了哪些科技实验室?
  19. 谷歌浏览器如何配置SSL证书
  20. 机器学习(三)——决策树

热门文章

  1. 使用Docker-容器命令案例1
  2. 简单分析@Configuration
  3. 接口中私有方法【应用】
  4. MapReduce运行机制-Map阶段
  5. 角色操作-角色添加代码实现
  6. hello-world
  7. 文本编码-Python2.x处理中文字符串
  8. 新版本springboot整合@transactional注解
  9. 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...
  10. Maven(1)--坐标与依赖