luogu P1361 小猫爬山 [iddfs]
题目描述
WD和LHX饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了。
WD和LHX只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,WD和LHX就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?
输入输出格式
输入格式:
第一行包含两个用空格隔开的整数,N和W。
接下来N行每行一个整数,其中第i+1行的整数表示第i只小猫的重量C i。
输出格式:
输出一个整数,最少需要多少美元,也就是最少需要多少辆缆车。
输入输出样例
5 1996
1
2
1994
12
29
2
说明
数据范围与约定
对于100%的数据,1<=N<=18,1<=C i <=W<=10^8。
My Solution
都已经是蒟蒻了solution写长一点吧
迭代加深排序iddfs的膜版之一,k从sum(data[0],data[1],...,data[n-1])/q到n之间
k表示最小可行答案(就是最后的答案啦)
注意data[0...n-1]从小到大排序
结果还是很短啊
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; inline int read(){
char ch;
int re=;
while((ch=getchar())<''||ch>'');
re=ch-'';
while((ch=getchar())>=''&&ch<='') re=re*+ch-'';
return re;
} const int maxn=;
int data[maxn];
int q,n;
int k=;
bool ok=;
int car[maxn]={}; void init(){
n=read(),q=read();
for(int i=;i<n;i++){
data[i]=read();
k+=data[i];
}
k/=q;
} void iddfs(int pos){
if(pos==n){
ok=;
return;
}
for(int i=;i<=k;i++)
if(car[i]+data[pos]<=q){
car[i]+=data[pos];
iddfs(pos+);
car[i]-=data[pos];
if(ok) return;
}
} inline bool compp(const int &n1,const int &n2){
return n1>n2;
} void solve(){
sort(data,data+n,compp);
while(k<=n){
iddfs();
if(ok){
printf("%d\n",k);
return;
}
k++;
}
} int main(){
//freopen("temp.in","r",stdin);
init();
solve();
return ;
}
luogu P1361 小猫爬山 [iddfs]的更多相关文章
- 洛谷——P1361 小猫爬山
https://www.luogu.org/problem/show?pid=1361#sub 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲 ...
- 洛谷 P1361 小猫爬山
题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W ...
- tyvj P2018 「Nescafé26」小猫爬山 解题报告
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...
- luogu P1361 小M的作物
题目链接 luogu P1361 小M的作物 题解 源汇点为A,B 向种子连边,容量为价值,每个种子能与A或B联通,考虑最小割 用建边的总流量减去最小割就是答案 相同利益的时候新建节点,由额外利益构成 ...
- TyvjP2018 「Nescafé26」小猫爬山
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...
- 「CH2201」小猫爬山 解题报告
CH2201 小猫爬山 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 ...
- AcWing 165. 小猫爬山 DFS
165. 小猫爬山 https://www.acwing.com/problem/content/description/167/ 题目 思路 dfs每一个小猫,对于要不要开新车的状态再进行dfs(注 ...
- 小猫爬山:dfs
题目描述: 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. ...
- 2018.11.5 Nescafe26 T1 小猫爬山
题目 题目描述 Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们 终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Fre ...
随机推荐
- springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)
一.什么是REST? 符合REST约束风格和原则的应用程序或者设计就是REST 例如: /blog/1 HTTP GET =>查询id=1的blog /blog/1 HTTP DE ...
- debian将默认中文改成英文
$ sudo export LANG=en_US.UTF-8 $ sudo dpkg-reconfigure locales
- PHP编译
编译php-5.3.6的时候需要先打一个内存泄露的补丁,具体的操作如下 tar vzxf suhosin-0.9.32.1.tar.gz tar vjxf php-5.3.6.tar.bz2 cd p ...
- for循环 重点题
1.冒泡排序 (特别重要): <script type="text/javascript"> var attr=Array(); for(var i=0; i< ...
- 安装nginx+lua开发环境
一.安装nginx及搭建本地测试环境 1.创建安装目录: /data/nginx2.安装make: yum-y install gcc automake autoconf libt ...
- hibernate 返回对象指定属性,需要返回的列,可以直接返回 对象属性
// hibernate 返回对象指定属性,需要返回的列,可以直接返回 对象属性 @Override public TeamPlan getTeamPlanByBaoMingId(String bao ...
- win7系统中使用DOS命令是出现乱码的解决方法
方法一:设置cmd显示字体1.win+R打开运行窗口->输入cmd->回车,打开命令行提示符窗口 win7系统运行窗口win7系统DOS命令行提示窗口 2.在命令行标题栏上点击右键,选择” ...
- php取出数组中的最大值
<?php /** * @param $arr * @return mixed * php取出数组中的最大值(方法一) */ function getMax($arr){ $max=$arr[0 ...
- Swift连接字符串和字符
字符串和字符的值可以通过加法运算符 (+) 相加在一起并创建一个新的字符串值: let string1 = "hello" let string2 = " there&q ...
- 国内互联网公司github网址
-----------------------------------------------------推荐技术------------------------------------------- ...