【每日一题】【区间合并】【贪心 模拟】多米诺骨牌 牛客小白月赛99 E题 C++

牛客小白月赛99 E题

多米诺骨牌

题目背景

牛客小白月赛99

题目描述

在这里插入图片描述

样例 #1

样例输入 #1

3
6 1
1 1 1 3 2 1
4 3 2 7 9 11
6 2
1 1 1 3 2 1
4 3 2 7 9 11
5 4
1 4 1 1 2
1 2 3 6 8

样例输出 #1

3
6
5

做题思路

按照玩多米诺骨牌的方式。

先将多米诺骨牌按照骨牌位置从小到大排序,相当于摆放好多米诺骨牌。

接着从第一个多米诺骨牌遍历到最后一个多米诺骨牌。

在此期间如果第 i i i个多米诺骨牌的位置在 i − 1 i-1 i1个多米诺骨牌的倒下范围内,那么“这一堆”多米诺骨牌倒下的个数+1 ; 否则从新开“一堆”多米诺骨牌,并且设置多米诺骨牌倒下个数为1。

最后按照从大到小顺序对“每一堆”多米诺骨牌倒下个数进行排序。

最后取 m i n ( m , 堆数 ) min(m,堆数) min(m,堆数)次多米诺骨牌倒下个数的和作为答案即可。

核心代码:

for(int i=1;i<=n;i++){if(i == 1 || dmn[i].x > last){ // 是第一个多米诺骨牌||不会被前面连带推倒sum[++cnt] = 1;//“这一堆”多米诺骨牌倒下个数设为1last = max(last , dmn[i].x + dmn[i].h);//维护多米诺骨牌倒下范围最大值}else{sum[cnt] ++;//“这一堆”多米诺骨牌倒下个数加一last = max(last , dmn[i].x + dmn[i].h);}}

代码

#include <iostream>
#include <algorithm>
#define int long long
using namespace  std;
const int N = 2e7+10;
int n , m ,k , w , q;
int cnt ,  sum[N];
struct Dmn{int h , x;
}dmn[N];
void init(){}
inline int read()
{char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
void solve(){n=read();m=read();for(int i=1;i<=n;i++){dmn[i].h = read();}for(int i=1;i<=n;i++){dmn[i].x = read();}sort(dmn+1,dmn+1+n,[&](Dmn a , Dmn b){return a.x < b.x;});cnt = 0;int last = 0;for(int i=1;i<=n;i++){if(i == 1 || dmn[i].x > last){ // 是第一个多米诺骨牌||不会被前面连带推倒sum[++cnt] = 1;//“这一堆”多米诺骨牌倒下个数设为1last = max(last , dmn[i].x + dmn[i].h);//维护多米诺骨牌倒下范围最大值}else{sum[cnt] ++;//“这一堆”多米诺骨牌倒下个数加一last = max(last , dmn[i].x + dmn[i].h);}}sort(sum+1,sum+cnt+1,greater<int>());int ans = 0;for(int i=1;i<=min(cnt,m);i++)ans+=sum[i];cout << ans << '\n';
}
signed main(){init();int _=1;_=read();while(_--)solve();return 0;
}

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

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

相关文章

Python二级知识点

在阅读之前&#xff0c;感谢大家的关注和点赞。祝你们都能心想事成、健健康康。 一.数据流程图 一般这道题是经常考的&#xff0c;有向箭头--->表示数据流。圆圈○表示加工处理。 二.字典如何比较大小 字典类型是如何比较大小的呢&#xff0c;是使用字典的键来比较大小&…

redis | Django小项目之Mysql数据库和Redis缓存的应用

Django小项目 需求整体架构图技术细节环境配置各文件配置settings.pyurls.pyviews.pyuser_update.html 结果相关代码补充r.hgetall(cacahe_key)new_data {k.decode():v.decode() for k,v in data.items()} 需求 整体架构图 技术细节 环境配置 django-admin startprojrct rmysi…

zdppy+vue3+onlyoffice文档管理系统实战 20240823上课笔记 zdppy_cache框架的低代码实现

遗留问题 1、封装API2、有账号密码3、查询所有有效的具体数据&#xff0c;也就是缓存的所有字段 封装查询所有有效具体数据的方法 基本封装 def get_all(self, is_activeTrue, limit100000):"""遍历数据库中所有的key&#xff0c;默认查询所有没过期的:para…

深度学习一(Datawhale X 李宏毅苹果书 AI夏令营)

一&#xff0c;机器学习基础 机器学习&#xff08;Machine Learning, ML&#xff09;是让机器具备学习能力的过程&#xff0c;其核心在于使机器能够自动寻找并应用复杂的函数&#xff0c;以解决各种任务如语音识别、图像识别和策略决策&#xff08;如AlphaGo&#xff09;。这些…

顺序表的顺序表示—动态分配

顺序表的顺序表示—动态分配 代码实现 #include <stdio.h> #include <stdlib.h> #define InitSize 15 // 初始化扩容长度typedef struct{int *data; // 动态分配数组的指针int MaxSize;int length; // 当前长度 }SeqList;void InitList(SeqList &L){// 申请一…

得峰(Deffad)A17G本本 - 安装debian12

文章目录 得峰(Deffad)A17G本本 - 安装debian12概述笔记电源插头设置硬件参数修复win10预装的软件列表做debain12的安装U盘从U盘启动引导用U盘装debian12通过U盘安装debian12到本本原有硬盘上成功配置debian12备注备注END 得峰(Deffad)A17G本本 - 安装debian12 概述 和同学讨…

YOLOv9改进策略【卷积层】| 利用MobileNetv4中的UIB、ExtraDW优化RepNCSPELAN4

一、本文介绍 本文记录的是利用ExtraDW优化YOLOv9中的RepNCSPELAN4&#xff0c;详细说明了优化原因&#xff0c;注意事项等。ExtraDW是MobileNetv4模型中提出的新模块&#xff0c;允许以低成本增加网络深度和感受野&#xff0c;具有ConvNext和IB的组合优势。可以在提高模型精度…

uni-app项目搭建和模块介绍

工具:HuilderX noed版本:node-v17.3.1 npm版本:8.3.0 淘宝镜像:https://registry.npmmirror.com/ 未安装nodejs可以进入这里https://blog.csdn.net/a1241436267/article/details/141326585?spm1001.2014.3001.5501 目录 1.项目搭建​编辑 2.项目结构 3.使用浏览器运行…

解决MySQL的PacketTooBigException异常问题

一、背景 在大数据量导入mysql的时候&#xff0c;提示错误Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large 原因是MySQL的max_allowed_packet设置最大允许接收的数据包过小引起的&#xff0c;默认的max_allowed_packet如果不设置&…

Qt 环境搭建

sudo apt-get upadte sudo apt-get install qt4-dev-tools sudo apt-get install qtcreator sudo apt-get install qt4-doc sudo apt-get install qt4-qtconfig sudo apt-get install qt-demos编译指令 qmake -projectqmakemake实现Ubuntu20,04 与Windows之间的复制粘贴 安装o…

API 的多版本管理,如何在 Apifox 中操作?

开放 API 是技术团队向外部提供服务和数据的关键手段。随着业务的发展和技术的更新&#xff0c;API 也需要不断进行版本迭代。这种迭代通常是为了满足市场需求&#xff0c;优化现有功能&#xff0c;增加新特性&#xff0c;或者修复漏洞。 在多个版本共存的情况下&#xff0c;团…

NLP从零开始------12. 关于前十一章补充(英文分词)

相较于基础篇章&#xff0c;这一部分相较于基础篇减少了很多算法推导&#xff0c;多了很多代码实现。 1.英文词规范化 英文词规范化一般分为标准化缩写,大小写相互转化&#xff0c;动词目态转化等。 1.1 大小写折叠 大小写折叠( casefolding) 是将所有的英文大写字母转化成小…

stm32MX+freertos在创建task时,选项的含义

任务名称&#xff08;Task Name&#xff09;&#xff1a; 用于标识任务的名称&#xff0c;便于调试和日志记录。 优先级&#xff08;Priority&#xff09;&#xff1a; 任务的执行优先级。FreeRTOS支持多个优先级&#xff0c;高优先级的任务会优先于低优先级的任务执行。 堆栈…

ubuntu20.04源码编译安装qemu(qemu8.2)

ubuntu20.04源码安装qemu8.2 本文用于记录在ubuntu20中源码编译安装qemu8.2&#xff0c;同时也希望能够对你有所帮助。 一、download qemu 根据自己的需求下载对应版本的qemu源码压缩包。 https://github.com/qemu/qemu/tags二、build qemu 解压缩后&#xff0c;执行下述命令。…

SpringBoot百万行Excel导入MySQL实践

在公司开发时&#xff0c;客户说需要支持大数据量excel导入&#xff0c;所以打算写一篇文章记录下思路和优化过程。 一、前期准备 首先我们选用的肯定是阿里出品的EasyExcel&#xff0c;对比poi和jxl占内存更少 easyexcel官方网站准备测试的数据库和excel文件&#xff0c;已经…

-Wl,-rpath= 编译器链接器指定动态库路径 与 LD_LIBRARY_PATH

实例先行&#xff0c; 1&#xff0c;情景 三互相依赖的小项目&#xff1a; &#xff08;1&#xff09;libbottom.so&#xff0c;无特别依赖&#xff0c;除系统文件 &#xff08;2&#xff09;libtop.so&#xff0c;依赖libbottom.so &#xff08;3&#xff09;app 可执行程…

springboot admin监控

服务端搭建 maven的依赖&#xff0c;包括服务端和客户端&#xff0c;以及注册到nacos上面 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

AI绘制思维导图:使用SpringBoot和Vue实现智能可视化

目录 引言&#xff1a; 思维导图的重要性和应用场景&#xff1a; AI在思维导图绘制中的应用&#xff1a; 概述SpringBoot和Vue框架的特点&#xff1a; 第一部分&#xff1a;思维导图概述 思维导图的定义和历史 思维导图的结构和组成部分 思维导图在不同领域的应用案例 …

Linux 进程 | 进程地址空间

文章目录 进程地址空间程序地址空间进程地址空间 进程地址空间 程序地址空间 地址空间一共有如下的几个区域&#xff0c;从下到上地址逐渐增加&#xff0c;其中栈区的空间是从上往下使用&#xff0c;即从高地址往低地址增长&#xff1b;堆区的空间是从下往上使用&#xff0c;…

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用DFX能力介绍(含闯关习题)

学完时间&#xff1a;2024年8月24日 学完排名&#xff1a;第1698名 一、Performance Analysis Kit简介 Performance Analysis Kit&#xff08;性能分析服务&#xff09;为开发者提供应用事件、日志、跟踪分析工具&#xff0c;可观测应用运行时状态&#xff0c;用于行为分析、…