AT_abc442_g [ABC442G] Lightweight Knapsack

news/2026/1/25 19:34:32/文章来源:https://www.cnblogs.com/Loop1st/p/19530344

来讲一下官解。

如果 \(K_i = 1\) 就是 CF808E,那题有神秘 DP 做法,感兴趣的可以去看看。

对于这题,肯定是要贪心的。有个显然的事情就是如果我们记重量为 \(w\) 的物品选了 \(F_w\) 个,那么我们肯定要贪心地选取 \(v\) 最大的那 \(F_w\) 个。

其次,我们可以将 \(6\)\(w = 1\) 的物品,或 \(3\)\(w = 2\) 的物品,或 \(2\)\(w = 3\) 的物品合并成一个 \(w = 6\) 的物品,合并带来的好处就是,我们不需要跑背包了,而是可以直接贪心地选取,因为 \(w\) 都是相同的。

但是现在问题是 \(F_1\) 不一定是 \(6\) 的倍数, \(w = 2, 3\) 同理,所以可能会有多出来的物品。无妨,我们假设 \(F_i \equiv R_i \pmod{\frac{6}{i}}\),即 \(F_1 \equiv R_1 \pmod 6\)\(F_2 \equiv R_2 \pmod 3\)\(F_3 \equiv R_3 \pmod 2\),那么我们优先把 \(v\)\(R_i\) 大的拿出来,剩下的合并即可。时间复杂度 \(\mathcal{O}(n \log nC)\),其中 \(C = \prod\limits_{i=1}^3 \frac{6}{i} = 36\)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
// typedef __int128 i128;
typedef pair<ll, ll> pll;
const int N = 2e5 + 10, mod = 998244353;
template<typename T>
void dbg(const T &t) { cout << t << endl; }
template<typename Type, typename... Types>
void dbg(const Type& arg, const Types&... args) {cout << arg << ' ';dbg(args...);
}
namespace Loop1st {
int n;
ll c, ans;
pair<ll, vector<pll>> merge(vector<pll> ls, int r, int g) { // 去掉最后 r 个,剩下的每 g 个合并成一组ll t = 0;while (r && !ls.empty()) {auto [v, k] = ls.back();if (k > r) { t += v * r; ls.back().second -= r; break; }t += v * k;r -= k;ls.pop_back();}vector<pll>res;ll cnt = 0, sum = 0;while (!ls.empty()) {auto [v, k] = ls.back();ls.pop_back();if (cnt) {if (cnt + k < g) {cnt += k;sum += v * k;continue;}k -= g - cnt;sum += v * (g - cnt);res.emplace_back(sum, 1);cnt = sum = 0;}if (k >= g) res.emplace_back(v * g, k / g);cnt = k % g;sum = v * cnt;}return {t, res};
}
void main() {vector<vector<pll>> ls(4);cin >> n >> c;for (int i = 0; i < n; i++) {ll w, v, k; cin >> w >> v >> k;ls[w].emplace_back(v, k);}for (int w = 1; w <= 3; w++) sort(ls[w].begin(), ls[w].end());for (int p = 0; p < 6; p++) {auto [t1, g1] = merge(ls[1], p, 6);for (int q = 0; q < 3; q++) {auto [t2, g2] = merge(ls[2], q, 3);for (int r = 0; r < 2; r++) {// dbg("###", p, q, r);auto [t3, g3] = merge(ls[3], r, 2);ll m = c - p - q * 2 - r * 3;if (m < 0) continue;m /= 6;ll sum = t1 + t2 + t3;auto g = g1;g.insert(g.end(), g2.begin(), g2.end());g.insert(g.end(), g3.begin(), g3.end());sort(g.begin(), g.end());while (!g.empty()) {auto [v, k] = g.back();if (k >= m) { sum += v * m; break; }m -= k;sum += v * k;g.pop_back();}ans = max(ans, sum);}}}cout << ans << '\n';
}}
int main() {// freopen("data.in", "r", stdin);// freopen("data.out", "w", stdout);ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int T = 1;// cin >> T;while (T--) Loop1st::main();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的有害气体检测系统

目录STM32有害气体检测系统概述核心硬件组成软件设计要点典型应用场景优化方向源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;STM32有害气体检测系统概述 STM32有害气体检测系统是一种基于STM32微控制器的嵌入式解决方案&#xff0c;用…

基于STM32的汽车防盗报警系统设计

目录 STM32汽车防盗报警系统设计概述核心功能模块硬件设计要点软件设计流程低功耗与安全优化典型应用场景扩展功能方向 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32汽车防盗报警系统设计概述 该系统基于STM32微控制器&#x…

基于STM32的电热水器控制系统设计

目录 系统架构设计温度采集模块加热控制模块人机交互模块安全保护机制通信功能扩展软件算法优化低功耗设计 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统架构设计 STM32电热水器控制系统通常采用模块化设计&#xff0c;包括主控…

2026年1月工业清洗与稀释剂厂家推荐榜单:脱漆剂/除蜡水/防锈油/溶剂油/助焊剂/碳氢清洗剂/环保型清洗剂/油墨稀释剂等专业化工产品源头供应

2026年1月工业清洗与稀释剂厂家推荐榜单:脱漆剂/除蜡水/防锈油/溶剂油/助焊剂/碳氢清洗剂/环保型清洗剂/油墨稀释剂等专业化工产品源头供应 随着全球制造业向智能化、绿色化转型,工业清洗与表面处理作为生产流程中的…

基于STM32的土壤湿度检测系统

目录 硬件组成土壤湿度传感器数据采集与处理显示与通信软件实现应用场景 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 硬件组成 STM32土壤湿度检测系统通常由STM32微控制器、土壤湿度传感器、电源模块、显示模块&#xff08;如LCD或…

基于STM32的多功能智能睡眠枕头

目录核心功能概述硬件架构设计软件算法实现典型应用场景开发注意事项源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;核心功能概述 STM32多功能智能睡眠枕头集成多种传感器与算法&#xff0c;通过实时监测用户睡眠数据&#xff08;如脑…

基于STM32的农业大棚环境检测系统的设计与实现

目录 系统概述硬件设计软件设计关键代码示例系统优化方向应用效果 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 农业大棚环境检测系统基于STM32微控制器&#xff0c;实时监测温湿度、光照强度、土壤湿度等参数&#xff0c…

给儿子的金钱信:关于运气、谦逊与“睡个好觉”的权利

正文儿子&#xff1a;前几天吃晚饭的时候&#xff0c;你随口提了一句&#xff1a;“我看朋友圈&#xff0c;大学那睡我对铺的哥们儿&#xff0c;刚提了辆豪车&#xff0c;说是做了什么项目&#xff0c;发了。”说话时你正夹着红烧肉&#xff0c;语气听着挺轻松&#xff0c;像是…

FastAPI系列(10):Request对象

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695 有些情况下我们希望能直接访问Request对象。例如我们在路径操作函数中想获取客户端的IP地址,需要在函数中声明Request类型的参数,FastAPI 就…

python基础语法 3

一.顺序语句在默认情况下&#xff0c;Python语句执行顺序是从上到下依次执行。比如&#xff1a;print(1) print(2) print(3)打印结果为1 2 3二.条件语句1.常见三种&#xff08;1&#xff09;ifif expression:do_something1do_something2next_something如果expression为真&am…

基于STM32 的老人跌倒监测系统设计与实现

目录 STM32 老人跌倒监测系统概述硬件设计软件设计关键代码示例&#xff08;STM32 HAL库&#xff09;系统优化方向应用场景 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32 老人跌倒监测系统概述 该系统利用STM32微控制器作为核…

基于STM32单片机的温室大棚控制

目录 STM32单片机在温室大棚控制中的应用系统核心功能模块典型硬件设计方案软件控制逻辑实现低功耗优化策略系统扩展功能典型部署方案 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32单片机在温室大棚控制中的应用 STM32单片机因…

基于STM32单片机的自动宠物喂食

目录 STM32单片机自动宠物喂食系统概述硬件组成软件功能电源管理扩展功能应用场景开发建议 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32单片机自动宠物喂食系统概述 自动宠物喂食系统基于STM32单片机设计&#xff0c;可实现定…

基于stm32厨房一氧化碳烟雾浓度检测及火灾报警器的设计

目录硬件设计软件设计报警功能实现安全与可靠性源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;硬件设计 采用STM32F103C8T6作为主控芯片&#xff0c;搭配MQ-7一氧化碳传感器和MQ-2烟雾传感器。传感器通过ADC接口将模拟信号传输给STM32…

基于stm32的便携式voc气体检测仪设计

目录硬件设计软件设计功能实现应用场景源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;硬件设计 STM32微控制器作为核心处理器&#xff0c;通常选择STM32F103系列&#xff0c;因其具备丰富的外设接口和低功耗特性。传感器模块选用高精度…

基于Android和蓝牙的智慧停车场系统的设计与实现

目录 系统概述核心技术组成关键实现步骤应用场景与扩展参考案例 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 基于Android和蓝牙的智慧停车场系统旨在通过移动应用与蓝牙技术实现停车位的智能管理、导航和支付功能。该系统…

基于MQTT协议的物联网家庭安防系统设计

目录 MQTT协议概述系统架构设计关键技术实现安全增强措施典型应用场景性能优化建议 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; MQTT协议概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布…

基于NB-IoT的温湿度监测系统设计

目录 NB-IoT温湿度监测系统概述系统核心组成关键技术实现应用场景案例开发工具与框架 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; NB-IoT温湿度监测系统概述 NB-IoT&#xff08;窄带物联网&#xff09;温湿度监测系统利用低功耗广…

基于rfid的门禁防盗报警系统设计

目录RFID门禁防盗报警系统概述系统核心组件工作流程关键技术特点应用场景扩展功能源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;RFID门禁防盗报警系统概述 RFID&#xff08;射频识别&#xff09;门禁防盗报警系统结合了RFID技术、门禁…

stm32燃气检测系统

目录STM32燃气检测系统概述核心硬件组成软件功能设计典型应用场景开发工具与资源源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;STM32燃气检测系统概述 STM32燃气检测系统是基于STM32微控制器开发的智能气体监测方案&#xff0c;主要用…