acwing-小猫爬山
题目描述
翰翰和达达饲养了N只小猫,这天,小猫们要去爬山。
经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。
翰翰和达达只好花钱让它们坐索道下山。
索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。
当然,每辆缆车上的小猫的重量之和不能超过W。
每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?
输入格式
第1行:包含两个用空格隔开的整数,N和W。
第2…N+1行:每行一个整数,其中第i+1行的整数表示第i只小猫的重量Ci。
输出格式
输出一个整数,表示最少需要多少美元,也就是最少需要多少辆缆车。
数据范围
1≤N≤18,
1≤Ci≤W≤108
输入样例:
5 1996
1
2
1994
12
29
输出样例:
2
题目分析
典型的DFS,加一些剪枝技巧。这道题能学到的地方一个是搜索的思路,一个就是剪枝技巧。搜索思路是一只小猫一只小猫搜索,对于搜索的每只小猫,匹配每一个小车车,如果小车车能放得下这只小猫,就把小猫放进去,继续dfs。最后是重新开辟一个小车车的情况dfs。
对于剪枝技巧,第一个剪枝的地方是如果小车车的数量比最小值还大的话,这个树枝直接砍掉,因为即使你遍历到枝头得到的答案也肯定比最小值大。这个技巧对于所有的求最小值的dfs都可以用,可以省去很大的时间。另外是要把小猫从最大的到最小的排一遍,因为我们要尽量使靠近根节点的树枝分叉小一些,这样搜索的次数会少很多。就是优先考虑决策少的元素。重的猫能放的车会少一些,所以先考虑重的猫。
要勤加思考,原来的英语老师说过,你可以懒一些,但你不能思考上懒。思考上懒才会导致你成绩难以提高。
ac代码
#include<iostream>
#include<algorithm>
using namespace std;int n,w;
int a[20];
int b[20];
int ans;
int minn;bool cmp(int a,int b){return a>b;
}void dfs(int cat,int car) { if(car>minn) return ;if(cat>=n){if(car<minn)minn=car;return;} for(int i=0; i<car; i++) {if(b[i]+a[cat]<=w) {b[i]+=a[cat];dfs(cat+1,car);b[i]-=a[cat];}}b[car]+=a[cat];dfs(cat+1,car+1);b[car]-=a[cat];return;
}int main() {cin>>n>>w;minn=n;for(int i=0; i<n; i++) {cin>>a[i];}sort(a,a+n,cmp);dfs(0,0);ans=minn;cout<<ans;return 0;
}
acwing-小猫爬山相关推荐
- DFS剪枝优化 小猫爬山 数独
DFS剪枝策略总结 优化搜索顺序 优先搜索分支数少(剩余选择少)的情况 排除等效冗余 若对顺序没有要求 可以将排列转化为组合 可行性剪枝 不合法的情况不进行搜索 最优化剪枝 若当前的"消耗& ...
- DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山
DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_&l ...
- 洛谷 P1361 小猫爬山
P1361 小猫爬山 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道 ...
- tyvj P2018 「Nescafé26」小猫爬山 解题报告
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...
- acwing165.小猫爬山
做题心得Acwing165.小猫爬山 题目 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰 ...
- 【AcWing 165】 小猫爬山 简单dfs + 剪枝优化
翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆 ...
- AcWing 165 小猫爬山
题目描述: 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. ...
- AcWing - 165 小猫爬山(dfs)
题目链接:点击查看 题目大意:给出n只小猫坐索道下山,索道上缆车的最大承重为W,而n只小猫的重量分别为C1,C2--Cn,要求每辆缆车上的小猫重量之和不能超过W,问最少需要几个缆车才能将所有的小猫都运 ...
- luogu P1361 小猫爬山 [iddfs]
题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W ...
- 小猫爬山(DFS+剪枝)
目录 题目描述 分析 优化1 优化2 Code 题目描述 翰翰和达达饲养了 N N N 只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕& ...
最新文章
- 平民架构的春天——UCloud数据方舟实战记
- java数组语法_Java 基本语法----数组
- opencv中的threshold()函数(二值化)
- 深入 理解 Statement 和 PreparedStatement
- kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
- Flex通用克隆(clone)方法
- POJ-1789 Truck History 最小生成树
- 【物联网】 Yeelink开发平台注册
- SAP云平台里给应用创建自定义环境变量
- 嵌入式RT3070 AP模式移植
- 亲历漏洞研究最让人难受的地方:看到打补丁版本,才知漏洞一直近在眼前(详述)...
- 5图片展示_拼多多搜索【智能创意】推广5大功能升级!
- SPI通信协议技术说明文档
- ksz9031 mmd读取不了_Ambarella 平台KSZ9031网卡直连不识别问题
- 解决 java double 减 int 型 产生的精度问题
- 微服务分布式构架开发实战PDF,阿里架构师推荐,快快收藏吧
- 【企业】乔吉拉德之 250 定律
- 数值最优化-KKT条件(一阶必要条件)证明总结
- 虚拟机服务器警报设置,设置VMware vCenter警报器获得更好的管理
- jq linux下载文件,Linux中的Json格式化神器jq下载与安装
热门文章
- Chrome、Edge等浏览器多线程下载功能开启
- UI设计教程分享:关于海报的合成过程
- 【论文笔记】知识图谱推理PRA——Relational retrieval using a combination of path-constrained random walks
- 当新消费撞上颜值经济,国产美瞳成为资本新宠儿
- android lcd,国产安卓机:LCD屏幕,正式再见
- Python实现常见的排序算法
- iPhone Plus手机的分辨率到底是多少,是1080×1920还是1242×2208?
- 世界排名第 3 的滴滴裁员,开春求职必知的独角兽排行榜
- 程序学3DMax之改变物体的中心轴及物体归置零点
- mysql association_MyBatis association的两种形式——MyBatis学习笔记之四