首页 > 编程语言 >小猫爬山 C++题解

小猫爬山 C++题解

时间:2024-04-04 22:34:13浏览次数:20  
标签:小猫 Freda int 题解 sum 样例 C++ 缆车

小猫爬山

内存限制: 256 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较

题目描述

Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。

Freda 和 rainbow 只好花钱让它们坐索道下山。索道上的缆车最大承重量为 W,而 N 只小猫的重量分别是 C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过 W。每租用一辆缆车,Freda 和 rainbow 就要付 1 美元,所以他们想知道,最少需要付多少美元才能把这 N 只小猫都运送下山?

输入格式

第一行包含两个用空格隔开的整数,N 和 W。

接下来 N 行每行一个整数,其中第 i+1 行的整数表示第 i 只小猫的重量 Ci。

输出格式

输出一个整数,最少需要多少美元,也就是最少需要多少辆缆车。

样例

样例输入
复制5 1996
1
2
1994
12
29
样例输出
复制2

(博主吐槽:什么鬼数据,重 1994 是什么鬼)

数据范围与提示

对于100%的数据,1<=N<=18,1<=Ci<=W<=10^8。

石家庄二中【Nescafé 26】杯NOIP模拟赛T1

#include <bits/stdc++.h>
using namespace std;
int n, m, sum;
int a[20], b[20];
void DFS(int x, int y) {
	if(y >= sum) {
		return;
	} 
	if(x == n + 1) {
		sum = min(y, sum);
		return;
	} 
	for(int i = 1; i <= y; i++) {
		if(a[x] + b[i] <= m) {
			b[i] += a[x];
			DFS(x + 1, y);
			b[i] -= a[x];
		} 
	} 
	b[y + 1] = a[x];
	DFS(x + 1, y + 1);
	b[y + 1] = 0;
} 
int main() {
	scanf("%d %d", &n, &m);
	sum = n;
	for(int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
	} 
	sort(a + 1, a + n + 1);
	reverse(a + 1, a + n + 1);
	DFS(1, 0);
	printf("%d\n", sum);
    return 0;
} 

标签:小猫,Freda,int,题解,sum,样例,C++,缆车
From: https://blog.csdn.net/xxy20110830/article/details/137384211

相关文章

  • git clone失败问题解决
    gitclone失败问题解决背景当gitclone出现以下问题时:error:RPCfailed;curl92HTTP/2stream5wasnotclosedcleanly:CANCEL(err8)error:5492bytesofbodyarestillexpectedfetch-pack:unexpecteddisconnectwhilereadingsidebandpacketfatal:earlyE......
  • 小木棍 C++题解
    小木棍内存限制:1024MiB时间限制:1000ms标准输入输出题目类型:传统评测方式:文本比较题目描述乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每......
  • C++之类
    目录一:面向过程和面向对象的初步认识二:类的引入三:类的定义3.1类的两种定义方式:3.2成员变量命名的建议四:类的访问限定符及封装4.1类的访问限定符4.2封装一:面向过程和面向对象的初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题......
  • 高手训练 负环 题解
    题目链接方向:枚举点的个数,找出其中边权和为负数的最小值。直接枚举显然会超时,不妨考虑使用倍增凑出点的个数(注意:点数不完全有单调性,但是后面会提到如何转化处理)。先预处理出\(dis_{t,i,j}\)表示经过\(t\)条边,从\(i\rightarrowj\)的最短路长度。那么类似\(Floyed\)显然......
  • 少儿编程 2024年3月电子学会图形化编程等级考试Scratch一级真题解析(选择题)
    2024年3月scratch编程等级考试一级真题选择题(共25题,每题2分,共50分)1、单击下列哪个按钮,能够让舞台变为“全屏模式”A、B、C、D、答案:C考点分析:考查scratch平台的使用,四个选项分别是:开始程序,停止程序,全屏模式,恢复正常模式,答案C2、下列哪个选项可以将当前背景换成第二......
  • 第十四届蓝桥杯B组c/c++第五题接龙数列
    动态规划  接龙数列我打眼一看感觉得用栈stack,取出首位和末位全都入栈,每次弹出栈顶,获取此时的栈顶并弹出和下一个栈顶比较。整了老半天发现不行,原来是我脑子瓦特了。虽然没有用栈解决这道问题,但是,栈和队列都是非常重要的只是,不了解的同学们可以去学习一下,下面有传送门。......
  • C++内存管理
    前言:本篇将介绍c/c++的内存空间结构与c++中对内存进行管理的用法,包括new,delete,operatornew与operatordelete,定位new以及与c中malloc和free的区别等,到stl容器的底层实现篇将会对内存操作进行模拟实现,会进一步加深对内存管理的理解。目录前言:1.new与delete操作符2.c/c++......
  • win server系统物理机转成虚拟机出现 计算机丢失api-ms-win-crt-stdio-|1-1-0.dll问题
     物理机转移虚拟机的方案有很多种,这里讲下官方的这个转移工具转移,很简单下载下来一步步跟着点就好了。但是server系统的话可能会出现如图这样子的报错,缺少dll文件,这是因为server系统本身缺少这个文件组,解决方式有两种:1.去下载dll表文件,放置对应的文件夹下面,重新迁移2.利用......
  • C语言 | Leetcode C语言题解之第8题字符串转换整数atoi
    题目:题解:intmyAtoi(char*s){inti=0;intout=0;intpol=1;intlen=strlen(s);if(len==0)return0;while(s[i]=='')i++;//删除空格if(s[i]=='-'){//判断正负pol=-1;i++;}else......
  • C++ 实验 03
    实验3.1设计一个用来表示直角坐标系的Location类,有两个double型私有数据成员x,y;主程序中,输入相应的值,创建类Location的两个对象a和b,分别采用成员函数和友元函数计算给定两个坐标点之间的距离。【提示】类Location的参考框架如下:classLocation{public:       Loc......