【小蓝的旅行计划——带悔贪心(优先队列)、线段树】

server/2025/2/13 13:01:41/

题目

动态规划代码 O(n \cdot m^{2})

#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int f[N][N];
int main()
{memset(f, 0x3f, sizeof f);int n, m;cin >> n >> m;f[0][m] = 0;for (int i = 1; i <= n; i++){int d, w, l;cin >> d >> w >> l;for (int j = 0; j <= m; j++){for (int k = 0; k <= l; k++){if(j - d < 0) continue; //未到else if (j + k - d <= m) //到了,且买完之后f[i][j + k - d] = min(f[i][j + k - d], f[i - 1][j] + w * k);elsebreak;}}}cout << f[n][0];
}

带悔贪心(优先队列)代码 O(n \cdot \log n)

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<int, ll>;
#define x first
#define y second
const int N = 2e5 + 10;
int d[N], w[N], l[N];
multiset<pll> ms;
int n, m;
ll lf; // 剩余油量
ll ans; // 总花费
int main()
{ios::sync_with_stdio(0); cin.tie(0);cin >> n >> m;for (int i = 1; i <= n; i++)cin >> d[i] >> w[i] >> l[i];ms.insert({0, m});lf = m;bool can = true; // 可行性for (int i = 1; i <= n; i++){lf -= d[i];if (lf < 0){can = false;break;}// 用便宜油while (d[i] > 0){auto u = *ms.begin();auto x = u.x;auto y = u.y; // x是价格,y是量if (d[i] >= y){d[i] -= y;ms.erase(ms.begin());}else{y -= d[i];d[i] = 0;ms.erase(ms.begin());ms.insert({x, y});}}// 全部购买lf += l[i];ans += (ll)w[i] * l[i];ms.insert({w[i], l[i]});// 退贵油while (lf > m){auto u = *prev(ms.end());auto x = u.x;auto y = u.y;if (lf - m >= y){ans -= x * y;lf -= y;ms.erase(prev(ms.end()));}else{ans -= (lf - m) * x;y -= lf - m;lf = m;ms.erase(prev(ms.end()));ms.insert({x, y});}}}if (can){for (auto u : ms){auto x = u.x;auto y = u.y;ans -= x * y; }cout << ans << '\n';}elsecout << "-1\n";
}


http://www.ppmy.cn/server/167333.html

相关文章

【浏览器多开】Google Chrome 谷歌浏览器分身术

谷歌浏览器分身术&#xff08;多开&#xff09;&#xff1a; 复制已有谷歌浏览器图标—>右键–>属性的目标栏中&#xff0c;添加 --user-data-dir自定义文件夹路径 参数。 例如&#xff1a; C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…

Vue的scoped原理是什么

Vue中的scoped是一种基于属性选择器的样式隔离方案&#xff0c;通过给组件生成唯一的属性选择器来实现样式隔离。 当在<style>标签上添加scoped属性时&#xff0c;Vue会为该组件的每个元素添加一个唯一的data-v-xxxx属性&#xff0c;并将样式规则中的选择器修改为包含该属…

C#常用集合优缺点对比

先上结论&#xff1a; 在C#中&#xff0c;链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 一维数组 (T[]) 优点&#xff1a; 性能高&#xff1a;数组在内存中…

命令行参数、环境变量、进程地址空间及 2.6 内核调度队列解读

目录 一、命令行参数与环境变量探秘 1.1 命令行参数的本质作用 1.2 环境变量实战指南 &#x1f335;关键环境变量解析 &#x1f335;测试PATH&#xff1a; &#x1f335;测试HOME&#xff1a; &#x1f335;环境变量的组织方式&#xff1a; &#x1f335;环境变量操作命…

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx&#xff1a;内网资源访问的绿色通道 问题背景 模拟生产环境&#xff0c;使用两层Nginx做反向代理&#xff0c;请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现&#xff0c;重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…

分布式 IO 模块:港口控制主柜的智能 “助手”

在繁忙的港口&#xff0c;每一个集装箱的装卸、每一艘货轮的停靠与离港&#xff0c;都离不开高效精准的控制系统。港口控制主柜作为整个港口作业的核心枢纽之一&#xff0c;其稳定运行至关重要。而明达技术自主研发推出的MR30分布式 IO 模块可作为从站&#xff0c;与 PLC&#…

elementuiPlus日期范围选择el-date-picker动态禁用时间选择

记录项目中的一个小需求&#xff1a;使用 elementuiPlus 日期选择组件时&#xff0c;需要动态禁用可选择的日期&#xff0c;禁止选中今天之后的日期&#xff0c;且选中的日期范围不饿能超过30天。 饿了么组件的 plus 版本去掉了v2版本的配置项 picker&#xff0c;改用 calenda…

【算法学习】DFS与BFS

目录 一&#xff0c;深度优先搜索 1&#xff0c;DFS 2&#xff0c;图的DFS遍历 (1)&#xff0c;递归实现&#xff08;隐士栈&#xff09; (2)&#xff0c;显示栈实现&#xff08;非递归&#xff09; 二&#xff0c;广度优先搜索 1&#xff0c;BFS 2&#xff0c;图的BF…