大顶堆+动态规划+二分

news2024/9/20 20:31:58

前言:我们这一题需要分类讨论
对于我们左边和右边的我们需要预处理
有点类似反悔堆的做法,得出i之前取出 m 个元素代价最小,并且这个代价一定是递减的(可以推导一下)


题目地址

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;

#define int long long
const int N = (int)1e5+10;
int v,n,m;
int le[N],rig[N];

struct node
{
    int va,wei;
    bool operator<(node b){
        return va<b.va;
    }
}sto[N];


signed main(){
    cin >> v >> n >> m;
    for(int i=1;i<=n;i++){
        cin >> sto[i].va >> sto[i].wei;
    }
    sort(sto+1,sto+1+n);
    int x = (m&1); m/=2;
    priority_queue<int> q;
    int now = 0;
    for(int i=1;i<=n;i++){
        now += sto[i].wei; q.push(sto[i].wei);
        while(q.size()>m-1+x) now -= q.top(),q.pop();
        le[i] = now;
    }
    now = 0;
    while(q.size()) q.pop();
    for(int i=n;i;i--){
        now += sto[i].wei; q.push(sto[i].wei);
        while(q.size()>m) now -= q.top(),q.pop();
        rig[i] = now;
    }
    int ans = 0;
    if(x){
        for(int i=m+1;i<=(n-m);i++){
            if(le[i-1]+sto[i].wei+rig[i+1]<=v){
                ans = max(ans,sto[i].va);
            }
        }cout << ans;
    }else{
        for(int i=m;i<=(n-m);i++){
            // 左端点取 i
            // 开始二分 右端点
            int l = m , r = (n-m)+2;
            while(l+1<r){
                int mid = (l+r)/2;
                if(le[i-1]+sto[i].wei+rig[mid]<=v) l = mid;
                else r = mid;
            }
            //cout << " i " << i << " " << l << endl;
            if(l>i&&l<=(n-m)+1) ans = max(ans,sto[i].va+sto[l].va);
        }
        cout << ans/2;
    }
    system("pause");
    return 0;
}

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

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

相关文章

Docker 华为云镜像加速器配置

​​ 操作说明 1. 安装/升级容器引擎客户端 推荐安装1.11.2以上版本的容器引擎客户端 2. 加速器地址 访问华为云容器镜像服务&#xff1a;https://console.huaweicloud.com/swr/ 获取加速器地址 https://xxxxxxxxx.mirror.swr.myhuaweicloud.com3. 配置镜像加速器 针对…

c语言快递小项目

struct pack_head{ int fd;//通信的文件描述符 unsigned char type; //消息类型 unsigned char usertype; //用户类型&#xff1a;1&#xff1a;用户 2&#xff1a;快递员 char name[32]; //用户名 char paaswd[32]; //密码 char buf[32]; //调试…

抗金属RFID标签如何提升资产管理效率

在资产管理中&#xff0c;金属表面的设备和资产对传统RFID标签来说是一大挑战。为了解决这一问题&#xff0c;企业开始广泛采用抗金属RFID标签&#xff0c;以确保在金属环境下也能高效地进行资产跟踪与管理。 抗金属RFID标签的应用场景 抗金属RFID标签是一种专门设计用于金属…

如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)

一、简述 在我们编写控制台应用程序时&#xff0c;默认情况下程序的打印输出会在控制台窗口中进行显示&#xff0c;我们在写服务功能时在窗口中会不断打印消息输出&#xff0c;这个时候如果使用鼠标点击了控制台窗口&#xff0c;会阻塞程序的继续运行&#xff0c;导致我们的程…

【Unity】在Unity 3D中使用Spine开发2D动画

文章目录 内容概括前言下载安装 Spine Pro导入Unity插件Spine动画导入Unity使用展现动画效果展现 内容概括 本文主要讲解 Spine Pro 免&#xff08;破&#xff09;费&#xff08;解&#xff09;版的安装&#xff0c;以及如何将动画导入到Unity中使用。 前言 通常要用 Spine …

Hadoop林子雨安装

文章目录 hadoop安装教程注意事项&#xff1a; hadoop安装教程 链接: 安装教程 注意事项&#xff1a; 可以先安装ububtu增强功能&#xff0c;完成共享粘贴板和共享文件夹 ubuntu增强功能 2.这里就可以使用共享文件夹 或者在虚拟机浏览器&#xff0c;用 微信文件传输助手 传文…

医学数据分析实训 项目二 数据预处理预备知识(数据标准化处理,数据离差标准化处理,数据二值化处理,独热编码处理,数据PCA降维处理)

文章目录 数据预处理预备知识任务一 数据标准化处理1. 数据准备2. 数据标准化 任务二 数据离差标准化处理任务三 数据二值化处理任务五 独热编码处理对数据进行“离散化处理”&#xff08;装箱&#xff09;将已经装箱的数据进行OneHotEncoder独热编码 任务六 数据PCA降维处理1.…

ingress对外服务

目录 ingress概念 安装ingress ingress-nginx暴露服务的方式 1. DeploymentLoadBalncer 2. DaemonSetHostNetworknodeSelector ​编辑 3.deploymentnodePort ​编辑 ingress-nginx的deploymentnodePorthttps部署 1.创建ssl的证书 2.ingressnginx ingress-nginx的权…

最强AI照片说话Windows一体包下载地址,口型合成音频驱动图片,免安装,下载即用

照片数字一键整合包&#xff1a;点击下载 一键安装包&#xff0c;简单一键启动&#xff0c;即刻使用&#xff0c;秒级体验。 目前效果最好的音频驱动图片说话的软件&#xff0c;比sadtalker、MuseTalk更清晰&#xff0c;效果更好&#xff0c;可以作为DID heygen的开源平替。原…

Vue安装及环境配置【图解版】

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words&#xff01; 目录 一.node.js的安装…

C语言算法

大纲 算法复杂度 排序算法 经典算法

如何使用ssm实现物流配送人员车辆调度管理系统的设计与实现+vue

TOC ssm618物流配送人员车辆调度管理系统的设计与实现vue 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思…

react和vue区别以及为什么会说react适合大型项目

都说react适合做大型项目&#xff0c;但是什么是大型项目呢。 什么是大型项目 这个所谓的大项目应该是指 多部门&#xff0c;多项目协作。而并不是页面量和工作日&#xff0c;对于大公司&#xff0c;协作所带来的成本&#xff0c;效率问题才是问题 为什么会说react要更适合大型…

开源waf牛了个b之长亭雷池

雷池官网&#xff1a; https://waf-ce.chaitin.cn/

IVF 视频文件格式

IVF IVF有两种定义&#xff0c;一种是 Intel创建&#xff0c;用于封装其Indeo编解码器。Indeo是一系列视频编解码器&#xff0c;由英特尔在1990年代开发&#xff0c;主要用于视频游戏和早期的互联网视频流&#xff1b;Indeo编解码器以其高压缩率和良好的视频质量而闻名&#x…

三好夫人 | 茶香月饼甜  浓情赏月圆

在这个金风送爽、丹桂飘香的中秋佳节&#xff0c;家家户户都沉浸在团圆与温馨的氛围之中。月饼&#xff0c;作为中秋的传统美食&#xff0c;承载着无数人对家的思念与美好祝愿。而今&#xff0c;当传统遇见创新&#xff0c;“三好夫人”——一个以男士滋补茶闻名遐迩的品牌&…

AI做梦,探索并还原你的梦

本文由 ChatMoney团队出品 作为一个爱幻想爱做白日梦的 i人&#xff0c;我常常就在想&#xff0c;什么时候能利用Al来帮助我找回一些被遗忘的、或者模糊不清的记忆? 有没有可能进入别人的梦境里瞧一瞧? 为什么世界上还有这么多的冲突和摩擦? 是不是因为人与人之间能够达到的…

OpenCV GUI常用函数详解

在OpenCV的High_level GUI模组中有很多GUI函数&#xff0c;下面介绍几个常用的函数。 图像显示窗口相关函数 生成图像显示窗口函数nameWindow() nameWindow()函数的原型如下&#xff1a; 函数用以创建一个给定名的图像显示窗口&#xff08;后面简单叫做图像窗口&#xff09;…

qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决

硬件&#xff1a;ThinkPad T15 系统&#xff1a;win10 专业版 qt版本&#xff1a;Qt 5.14.1 &#xff0c; QtCreator 4.11.1 软件界面放了一个QPushButton&#xff0c;一个QVBoxLayout&#xff0c;如下&#xff1a; 主要代码如下&#xff0c;我添加了两条曲线&#xff0c;…

Spring扩展点系列-SmartInstantiationAwareBeanPostProcessor

文章目录 简介源码分析示例 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPostProcessor postProcessBeanDefinitionRegistry B…