题目描述

双十一就要来啦!而Yuno刚刚获得了一笔X元的奖金。那么是不是应该清空下购物车呢?
购物车总共有N个物品,每个物品的价格为Vi,Yuno想尽可能地把手头的奖金给花光,所以她要精心挑选一些商品,使得其价格总和最接近但又不会超过奖金的金额。那么Yuno最后最少可以剩下多少钱呢?

输入

第一行,两个正整数N和X。
第二行,N个正整数Vi表示第i个物品的价格。

输出

输出一个整数,表示Yuno最后最少可以剩下的钱数。

样例输入

4 50
1 2 3 4

样例输出

40

提示

对于100的数据,N≤40,X,Vi≤109

思路:

由于背包容量过大,所以用不了01背包,但是物品的数目只有40个,但如果依次枚举的话,40^2的复杂度会超时,因此我们分成两部分进行暴搜,第一部分先是随机选20个以内的物品,将这些物品的总价值存入一个数组中,第二个部分是对剩下的20个物品进行暴搜,再将第二部分取到的物品的价值与第一部分存下的那个数组相加求出最小剩余钱数来。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define ull unsigned long long
#define met(a, x) memset(a,x,sizeof(a))
#define mp make_pair
using namespace std;
const int mod = 998244353;
const int N = 1e6 + 1e5;
ll w[50],tmp[N];
ll n,x,ans=0,mid;
ll sum=0;
void dfs1(ll k,ll cnt){if(cnt>x){return ;}ans=min(ans,x-cnt);if(k>mid){tmp[++sum]=cnt;return;}dfs1(k+1,cnt);dfs1(k+1,cnt+w[k]);
}
void dfs2(ll k,ll cnt){if(cnt>x)return ;if(k>n){ll pos=upper_bound(tmp+1,tmp+1+sum,x-cnt)-tmp;if(pos)ans=min(ans,x-cnt-tmp[pos-1]);return ;}dfs2(k+1,cnt);dfs2(k+1,cnt+w[k]);
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>x;ans=x;for(int i=1;i<=n;i++){cin>>w[i];}mid=(n+1)/2;dfs1(1,0);sort(tmp+1,tmp+1+sum);if(n){dfs2(mid+1,0);}cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/nublity/p/10274006.html

You Like Cake(背包容量过于大的折半搜索法)相关推荐

  1. 我的世界服务器物品栏太小咋办,《我的世界》MC背包容量太小?这四个装东西的道具了解一下!...

    原标题:<我的世界>MC背包容量太小?这四个装东西的道具了解一下! <我的世界>除了背包之外,还有四个道具是可以用来装东西的,但是有不少玩家都不知道.虽然背包是默认的储存道具, ...

  2. 苹果xr电池容量_iPhone XR电池容量多大?苹果XR电池续航能力详解

    ↑点击上方"易格数码通讯"关注我们 苹果新系列机型的电池细节参数信息并没有在官网公布.电池容量大小对于续航是起到关键作用是毋庸置疑的,那iPhone XR电池容量多大?续航能力怎么 ...

  3. 邮箱的容量怎么算怎么看?免费邮箱容量多大?能办公用吗?

    现在00后已经毕业进入社会了,年轻一代的职场白领正在成为社会的中坚力量,他们共同特点是追求高质量.高效率的节奏,工作生活都一丝不苟. TOM VIP邮箱,便是这些人群奔跑在职场道路上的得力助手,为他们 ...

  4. 计算机硬盘容量越大运行速度越快,固态硬盘容量越大运行速度越快吗 固态硬盘运行速度分析...

    现在很多人在组装电脑时都会优先选择固态硬盘,那么固态硬盘容量越大运行速度越快吗?这里给大家介绍一下. 固态硬盘容量越大运行速度越快吗 ? 理论上来说,固态硬盘容量越大,IPOS性能越好,随机读写速度越 ...

  5. 服务器系统容量,服务器的容量多大

    服务器的容量多大 内容精选 换一换 您可以查看Anti-DDoS监控报表,查看单个公网IP的监控详情,包括当前防护状态.当前防护配置参数.24小时的流量情况.24小时的异常事件等.您可以查看Anti- ...

  6. 服务器缓存多会影响网速吗,内存容量过大是否会影响网速

    不少用户担心内存会影响网速,对于内存容量过大是否会影响到网速这一问题,下面学习啦小编就为大家介绍一下具体的内容吧,欢迎大家参考和学习. 造成打开网页速度慢有多种原因: 1. 如果网速低也有影响,换个时 ...

  7. 红米8a的android版本是多少,红米8/8A电池容量多大?支持快充吗?快充功率是多少呢...

    红米8/8A支持快充吗?快充功率是多少呢?红米新机Redmi红米8系列手机马上就要开售了,很多小伙伴想了解一下这款红米8/8A电池电量以及红米8/8A 是否支持快充以及它的快充功率,下面智能手机网小编 ...

  8. 服务器固态硬盘120g多少钱,120G固态硬盘实际容量多大? 120G固态硬盘实际大小...

    今天有网友在脚本之家中留言,问到"120G固态硬盘实际容量多大?".由于计算机算法与厂商算法不同,导致硬盘实际可用容量相比标注的容量要小不少,下面小编结合自己的电脑,为大家科普一下 ...

  9. 苹果8p电池多少毫安的_iPhone12Pro电池容量多少毫安 苹果12Pro电池容量多大

    苹果iPhone12Pro手机电池容量多少毫安,iPhone12系列电池容量多大,相信很多人对于今年iPhone12系列的参数配置十分关注,尤其是电池容量,这会决定着iPhone12的续航时间,以下我 ...

  10. vivox23android系统耗电25,vivox23电池容量多大

    对于大屏手机来说,电池容量也主要关注的问题之一,毕竟手机续航时间越长使用起来就越方便,那么vivox23电池容量多大呢?电池耗电快吗? vivox23电池容量多大 vivoX23搭载的是一块3400m ...

最新文章

  1. USEARCH11命令大全,200+命令中文简介,快速查找需要功能
  2. Redisson实现Redis分布式锁的N种姿势
  3. 分子排列不同会导致_原子或分子之间的作用力是什么力?
  4. 更新Android Studio 3.1.1碰到的问题
  5. 经典C语言程序100例之二六
  6. SAP ABAP和C4C,Hybris Commerce里一些性能分析工具
  7. OCA第2部分中的Java难题
  8. 242.判断一个字符串是否为另一个的乱序 Valid Anagram
  9. 利用元数据管理数据质量
  10. 高端存储器研发再获突破 集成电路国产化进程加快
  11. [html] 回到页首
  12. Microsoft Office Visio 2007和Microsoft Office Project 2007下载
  13. c语言大作业酒店管理系统,管理信息系统大作业《酒店管理系统》.doc
  14. 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
  15. Labview实时电压显示
  16. flash firefox linux,Linux下安装firefox的flash插件
  17. Oracle Database 11g SQL开发指南store模式脚本
  18. BTN7971B电机驱动设计(含原理图)
  19. backup archivelog all not backed up;
  20. 【OpenCV + Python】之bitwise_and、bitwise_not,bitwise_xor等图像基本运算(opencv位操作)

热门文章

  1. mysql upsert语法_mysql – SQL标准UPSERT调用
  2. 比较两个字符数组是否相等_Java比较两个数组是否相等(equals())
  3. linux web目录安全设置,[LNMP]Linux的Web环境的安全配置
  4. linux 卡在grub_关于linux开机进入grub问题的解决方法
  5. python上机实验报告读取文件_Python程序设计实验报告八:文件
  6. 大数据应用让医疗护理更高效
  7. 使用css3背景渐变中的透明度来设置不同颜色的背景渐变
  8. mapreduce实现矩阵相乘
  9. discuz! X3.2 自定义后台门户模块模板里的标签
  10. 【Webcam设计】USB摄像头(V4L2接口)的图片采集