3564: 小张的困惑

本文讲述了IT程序员小张转行做民工后遇到的烧脑问题。包工头要求他从M块高度不同的石材中选择一些,使堆叠高度不低于N米,且高出部分尽可能少。小张需要找到最佳方案,解决这个类似二叉树问题的挑战。通过输入石材数量和最低高度,以及每块石材的高度,计算并输出满足条件的总高度。
摘要由CSDN通过智能技术生成

3564: 小张的困惑

题目描述
最近,一直在IT行业"搬砖"的程序员小张考虑到自己日渐稀疏的发量,决定跳槽去做工地"搬砖"做一名真正的民工,可是小张进入工地的第二天,包工头就交代给了小张另一个对发量极为不利的烧脑任务。现在有M(1≤M≤20)块工地的石材,高度分别Hi米(1≤Hi≤1000,000),这些石材的垒起来的总高度为S,包工头让小张从这些石材中选出一些石材,垒出一个工作台,要求工作台的高度不能低于N米(1 ≤ N ≤ S ),并且高出N米的长度越少越好,这样方便工人站在该工作台上作业。现在,你能帮小张从这M块石材中找出一个集合,垒起来的高度满足包工头的要求吗?

输入
第一行M和N分别表示石材的个数和包工头要求的最低高度
第二到M+1行,H1,H2,…HM表示每块石材的高度

输出
输出一个整数,表示满足包工头要求的石材垒出的高度。

样例输入
copy
5 16
3
1
3
5
6
样例输出
17

在这里插入图片描述
每个数字都有选和不选两个情况。用一个数组b保存二叉树;
当和大于要求值时开始记录与要求值相差最小的值,最后加上要求值就是答案;

#include<bits/stdc++.h>

using namespace std;

int main()
{
   
	int num,maxn,a[25]={
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值