2.最大费用
时间:2021-07-12
本文章向大家介绍2.最大费用,主要包括2.最大费用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
2.最大费用
题面
题目描述
商场一共 \(n\) 个物品,第 \(i\) 件物品的价格为 \(a_i\),每件物品只能买一件,你手上有 \(m\) 块钱。
求最多支出多少钱。
输入格式
第一行两个整数 \(n,m\)。
接下来 \(n\) 个整数,表示 \(a_i\)。
输出格式
输出最多支出是多少钱。
样例
样例 1 输入
3 10
1 2 3
样例 1 输出
6
样例 2 输入
4 10
4 3 5 11
样例 2 输出
9
数据范围与提示
对于 \(10\%\) 的数据,\(n\leq 10\)。
对于 \(30\%\) 的数据,\(n\leq 20\)。
对于 \(60\%\) 的数据,\(n\leq 30\)。
对于 \(100\%\) 的数据,\(1\leq n\leq 40\)。
分析
- 第一眼,Dp?
- 第二眼,m多大?哦,原来没给
- 那么 \(40\) 个数全部遍历找支出,需要 \(40!\) 次。
- 那么折半搜索登场了
- 将 \(n\) 个数分成两份,一份 \(1\sim \lfloor \frac{n}{2} \rfloor\),另一份 \(\lfloor \frac{n}{2} \rfloor + 1 \sim n\)。
- 将两份中小于或等于 \(m\) 的情况全部用数组存起来。
- 然后通过两份的各自一种情况相加,来得到小于等于 \(m\) 的最大值(如果不选那么那一份的情况为 \(0\))。
- 最后,\(m\) 多大?
- 不知道?那么开个 long long 不过分吧,毕竟也没有明示用高精。
Code
#include <bits/stdc++.h>
using namespace std;
const int N = 50;
long long n, m;
long long a[N], ans;
vector<long long> l, r;
void dfs(int st, int en, long long sum, vector<long long> &now) {
if (sum > m) return;
if (st > en) {
now.push_back(sum);
return;
}
dfs(st + 1, en, sum + a[st], now);
dfs(st + 1, en, sum, now);
}
int main (void) {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
dfs(1, (n >> 1), 0, l);
dfs((n >> 1) + 1, n, 0, r);
sort(l.begin(), l.end());
sort(r.begin(), r.end());
int lr = r.size();
for (int i = 0; i < lr; ++i) {
int p = lower_bound(l.begin(), l.end(), m - r[i] + 1) - l.begin() - 1;
if (p > 0) ans = max(ans, l[p] + r[i]);
}
cout << ans;
return 0;
}
原文地址:https://www.cnblogs.com/Juro/p/15003402.html
- React第三方组件6(状态管理之Mobx的使用③TodoList中)
- P1554 梦中的统计
- Word2Vec教程-Skip-Gram模型模型“伪”任务关于模型的更多细节隐藏层输出层
- React第三方组件6(状态管理之Mobx的使用②TodoList上)
- The 9th Zhejiang Provincial Collegiate Programming Contest
- P1789 【Mc生存】插火把
- FOJFOJ有奖月赛-2012年4月(校赛热身赛)-解题报告总结
- poj 1316 Self Numbers
- React第三方组件6(状态管理之Mobx的使用①简单使用)
- poj 1088 滑雪
- 八数码难题解法大全
- React第三方组件5(状态管理之Redux的使用⑥Redux DevTools)
- React第三方组件5(状态管理之Redux的使用⑤异步操作)
- HDU - 1846 Brave Game
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP 错误和异常处理(下)
- PHP 错误和异常处理(上)
- 玩转 PhpStorm 系列(一):主题篇
- 如何用云开发打造“万人同屏”高并发实时互动小程序
- 实战丨云开发帮你和「火箭少女」合个影!
- 开源数据闪回工具—binlog2sql介绍
- 盘点前端面试常见的15个TS问题,你能答对吗?
- 『深度思考』对CenterNet的一些思考与质疑·测试对比CenterNet与U版YoloV3速度与精度
- 优秀员工应该具备的11个特质
- 腾讯位置服务教你快速实现距离测量小工具
- 一张PDF了解JDK11 GC调优秘籍-附PDF下载
- 如何用函数框架快速开发大型 Web 应用 | 实战
- 划重点 | Android Jetpack 三大重要更新!
- JVM系列之:详解java object对象在heap中的结构
- 微信会话语音文件的一句话识别