题目

1
在这里插入图片描述
2
在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
struct node{int pre,//上一个水果块(对于水果就是上个水果)l,//块开始的序号,左边界 d,//块类型,0/1id,//水果序号 r,//块结束的序号,右边界 next;//下一块(下个水果)node(){d=-1;id=-1;};//空参数构造函数 node(int px,int lx,int vx,int rx,int nx){//构造水果块。//上一块,左边界,水果类型,右边界,下一块 pre=px,l=lx,d=vx,r=rx,next=nx;};node(int px,int idx,int nx){//构造一个水果//上一个水果,水果序号,下一个水果 pre=px,id=idx,next=nx;}; bool isempty(){//判定块是否空了(已挑空该块水果) if(l>r)return 1;else return 0;} 
}k[N],f[N];//N块,N水果 
int n,//水果数m=0;//块序号 
void view(int x){cout<<"果篮"<<x<<endl;for(int i=k[0].next;k[i].d!=-1;i=k[i].next){//遍历所有块 cout<<i<<"("<<k[i].d<<")";for(int j=k[i].l;j!=k[k[i].next].l;j=f[j].next)//遍历该块所有水果 cout<<f[j].id<<" ";cout<<"\t";}cout<<endl;
}
int main(){//freopen("data.cpp","r",stdin);int l=0,//左边界 r,//右边界 x=-1,//本块水果类型 x2;//后块水果类型 scanf("%d",&n);for(int i=1;i<=n+1;i++){//遍历所有水果。多循环一次,用以确认最后一块 if(i<=n)scanf("%d",&x2);else x2=-2;//最后一块,跟第一块-1不一样(全空后不合并)f[i]=node{i-1,i,i+1};//建立本水果(链表) if(x!=x2){//本水果跟上一水果不一样,那前面就是一个块 r=i-1;//上一块的右边界 k[m]=node{m-1,l,x,r,m+1};//建立上一块(链表) l=i,x=x2;//本块的左边界和水果类型 m+=1;//本块序号 }}k[m]=node{m-1,n+1,-2,n+1,m+1};//尾块//view(0);while(k[0].next!=m){//第一个空块的下一个不是最后一个空块就继续 for(int i=k[0].next;i!=m+1;i=k[i].next){//遍历所有块,包括最后一个空块 if(k[i].d!=-2){//非最后一个空块 //cout<<"输出"<<i<<"("<<k[i].v[0]<<")\n";cout<<f[k[i].l].id<<" ";//输出该块左边界对应水果序号 if(!k[i].isempty()){//非空就去掉第一个元素——左边界右移 f[f[k[i].l].pre].next=f[k[i].l].next;//左边界的上一水果的下一水果是左边界的下一水果 f[f[k[i].l].next].pre=f[k[i].l].pre;//左边界的下一水果的上一水果是左边界的上水果 k[i].l=f[k[i].l].next;//块的首水果变成水果的下一水果 }}int j=k[i].pre;//处理上一块 if(k[j].isempty()){//如果上一块空了,if(k[k[j].pre].d==k[k[j].next].d){//前后一样,合并。//合并后块到前块 k[k[j].pre].r=k[k[j].next].r;//上一块的右边界改成下一块的右边界水果 k[k[j].pre].next=k[k[j].next].next;//前块的后块是后块的后块 k[k[k[j].next].next].pre=k[j].pre;//后块的后块的前块是前块 }else{//前后不一样,续接上 k[k[j].pre].next=k[j].next;//前一个的下一个是自己下一个 k[k[j].next].pre=k[j].pre;//下一个的前一个是自己上一个 }}//view(i);}cout<<endl;//view();} return 0;
}

思路

  • 模拟按块取水果,并动态合并空块
  • 双层双向链表。水果块和各水果
  • 遍历所有块,并输出每块首水果。某块被取空,如果前后块一样就合并,否则续接
  • 每个水果会被处理1次(O(n)),每个果篮会被处理1次(O(n)),能处理n=2e5的规模。

小结

链表还是很有趣,多操作,熟能生巧。
都在处理序号,不管块双向链表和水果双向链表。块的首个水果和尾水果跟水果的序号统一。

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

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

相关文章

【C++】STL二叉搜索树——map与set容器的基础结构

目录 前言 1.二叉搜索树的概念 1.1基本结构 1.2性能分析 2.二叉搜索树的实现 2.1创建 2.2插入 2.3查找与遍历 2.4删除 3.二叉搜索树类代码 前言 C中STL的map与set容器广泛应用于实践过程中&#xff0c;本文将详细分析容器最基础的二叉搜索树结构&#xff0c;为后续map…

基于Spring Boot和SSE的实时消息推送系统

一、SSE技术深度解析 1.1 协议工作原理 #mermaid-svg-u7ZBlEsXcn68R5a8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-icon{fill:#552222;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-text{fi…

Day 40 训练和测试的规范写法

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练代…

分析代码并回答问题

代码 <template><div>Counter: {{ counter }}</div><div>Double Counter: {{ doubleCounter }}</div> </template><script setup lang"ts"> import { ref, computed } from "vue";const counter ref(0);const …

在macOS上扫描192.168.1.0/24子网的所有IP地址

在macOS上扫描192.168.1.0/24子网的所有IP地址&#xff0c;可以通过终端命令实现。以下是几种常用方法&#xff1a; 使用ping命令循环扫描 打开终端执行以下脚本&#xff0c;会逐个ping测试192.168.1.1到192.168.1.254的地址&#xff0c;并过滤出有响应的IP&#xff1a; for i …

Java基础05——类型转换(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)

Java基础05——类型转换 类型转换 由于Java是强类型语言&#xff0c;所以要进行有些运算的时候&#xff0c;需要用到类型转换。 如&#xff1a;byte(占1个字节)&#xff0c;short(占2个字节)&#xff0c;char(占2个字节)→int(4个字节)→long(占8个字节)→float(占4个字节)→do…

mysql基础(二)五分钟掌握全量与增量备份

全量备份 Linux环境 数据备份 数据库的备份与恢复有多中方法&#xff0c;通过mysql自带的mysqldump工具可对数据库进行备份。语法&#xff1a; mysqldump -u username -p password --databases db_name > file_name .sql说明&#xff1a; -u参数指定用户名&#xff0c;usern…

使用Windbg分析多线程死锁项目实战问题分享

目录 1、问题描述 2、使用.effmach x86命令切换到32位上下文 3、切换到UI线程&#xff0c;发现UI线程死锁了 4、使用!locks命令查看临界区锁的详细信息&#xff0c;遇到了问题 5、使用dt命令查看临界区对象信息&#xff0c;找到发生死锁的多个线程 6、用户态锁与内核态锁…

防火墙组网方式总结

一、部署模式&#xff1a;灵活适配多样网络环境下一代防火墙&#xff08;NGAF&#xff09;具备极强的网络适应能力&#xff0c;支持五种核心部署模式&#xff0c;可根据不同网络需求灵活选择。路由模式&#xff1a;防火墙相当于路由器&#xff0c;位于内外网之间负责路由寻址&a…

AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史

目录 1.介绍 2.发展历史 2.1.早期探索阶段(2015-2019) 2.1.1.技术萌芽期 2.1.2.RNN/LSTM时代 2.2.技术突破期(2020-2021) 2.2.1 Transformer引入视频生成 2.2.2 扩散模型的兴起 2.3.商业化突破期(2022-2023) 2.3.1 产品化里程碑 2.3.2 竞争格局形成 2.4.革命…

14mm寻北仪能否塞进液压支架生死缝隙?

在煤矿井下世界的方寸之间&#xff0c;液压支架的每个关键节点都承载着千钧重压。顶梁铰接点、立柱顶端、掩护梁角落&#xff0c;恰恰是空间最为局促的“禁区”。ER-MNS-10A MEMS寻北仪应运而生&#xff01;它采用了先进的MEMS陀螺技术&#xff0c;以14mm至薄高度、40g极致轻盈…

python之浅拷贝深拷贝

文章目录潜拷贝(shallow copy)深拷贝(deep copy)总结一下python的浅拷贝和深拷贝.潜拷贝(shallow copy) python中潜拷贝指的是:构造一个新的复合对象&#xff0c;然后将原对象中的对象引用插入其中 平常开发过程中潜拷贝是比深拷贝更常见的场景. 比如编程中使用到的一些基本的…

普通大学本科生如何入门强化学习?

问题:你平时是如何紧跟大型语言模型和智能体技术前沿的&#xff1f;有哪些具体的学习和跟踪方式&#xff1f;回答:我会通过“输入-内化-实践”结合的方式跟踪前沿。首先&#xff0c;学术动态方面&#xff0c;每天花10分钟浏览arXiv的http://cs.CL和http://cs.AI板块&#xff0c…

新手向:Python实现数据可视化图表生成

Python数据可视化入门&#xff1a;从零开始生成图表数据可视化是数据分析过程中不可或缺的关键环节&#xff0c;它通过将抽象的数字信息转化为直观的图形展示&#xff0c;帮助分析师和决策者更快速、更准确地发现数据中隐藏的模式、规律和发展趋势。在当今大数据时代&#xff0…

VBA即用型代码手册:计算选择的单词数Count Words in Selection

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建及…

DNS(域名系统)

分层结构根域名&#xff08;ipv4&#xff0c;13台&#xff09;&#xff0c;二级域名&#xff0c;三级域名……相关记录A将域名解析为ipv4地址AAAA将域名解析为ipv6地址MX指名该区域为邮件服务区PTR反向查询将主机名解析为域名NS记录服务器的名字CNAME别名查询方式递归查询迭代查…

【大模型】强化学习算法总结

角色和术语定义 State&#xff1a;状态Action&#xff1a;动作Policy/actor model&#xff1a;策略模型&#xff0c;用于决策行动的主要模型Critic/value model&#xff1a;价值模型&#xff0c;用于评判某个行动的价值大小Reward model&#xff1a;奖励模型&#xff0c;用于给…

基于梅特卡夫定律的开源链动2+1模式AI智能名片S2B2C商城小程序价值重构研究

摘要&#xff1a;梅特卡夫定律揭示了网络价值与用户数量的平方关系&#xff0c;在互联网经济中&#xff0c;连接的深度与形式正因人的参与发生质变。本文以开源链动21模式、AI智能名片与S2B2C商城小程序的协同应用为研究对象&#xff0c;通过实证分析其在社群团购、下沉市场等场…

Ubuntu22.04安装CH340驱动及串口

一、CH340驱动安装 1.1 查看USB设备能否被识别 CtrlAltT打开终端&#xff1a; lsusb 插入设备前&#xff1a; 插入设备后&#xff1a; 输出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息&#xff0c;这表明CH340设备已经被系统识别。 1.2 查看USB转串…

CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存现代计算机体系结构中用于提高性能的关键技术

CPU缓存&#xff08;CPU Cache&#xff09;和TLB&#xff08;Translation Lookaside Buffer&#xff09;缓存是现代计算机体系结构中用于提高性能的关键技术。它们通过减少CPU访问数据和指令的延迟来提高系统的整体效率。以下是对这两者的详细解释&#xff1a; 1. CPU 缓存 CPU…