备战蓝桥杯---数据结构与STL应用(入门1)

话不多说,直接看题:

下面为分析:显然,我们要先合并最小的两堆(因为他们在后边也得被计算,换句话,我们独立的看,某一堆的体力值为他自己重量*从现在到最后的次数)

因此,我们可以用两个队列来做。下面我用图来描述过程:(其实可以直接优先队列)

下面为AC代码:

接题(比较难):

这个题跟上一个有异曲同工之妙,我们可以用3个队列来维护最大长度(用优先队列会超),同时,有个十分巧妙地点,对于某个过程产生的蚯蚓,我们让他们-前面时间增加的长度,这样统一了基准,巧妙地把某个过程产生的蚯蚓化为一开始就产生的。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,q,u,v,t,a[100010],ck;
bool cmp(int a,int b){return a>b;
}
signed main(){scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1,cmp);queue<int> q1;queue<int> q2;queue<int> q3;for(int i=1;i<=n;i++){q1.push(a[i]);}for(int i=1;i<=m;i++){int max1,a1=-0x7f7f7f7f,a2=-0x7f7f7f7f,a3=-0x7f7f7f7f;if(!q1.empty()) a1=q1.front();if(!q2.empty()) a2=q2.front();if(!q3.empty()) a3=q3.front();max1=max(a1,max(a2,a3));if(max1==a1) q1.pop();else if(max1==a2) q2.pop();else q3.pop();max1+=(i-1)*q;if(i%t==0) cout<<max1<<" ";q2.push(max1*u/v-(i)*q);q3.push(max1-max1*u/v-(i)*q); }cout<<endl;while(!q1.empty()&&!q2.empty()&&!q3.empty()){int a1=q1.front(),a2=q2.front(),a3=q3.front();if(a1>=max(a2,a3)){q1.pop();ck++;if(ck%t==0) cout<<a1+q*m<<" ";continue;}if(a2>=max(a1,a3)){q2.pop();ck++;if(ck%t==0) cout<<a2+q*m<<" ";continue;}if(a3>=max(a2,a1)){q3.pop();ck++;if(ck%t==0) cout<<a3+q*m<<" ";continue;}}if(q1.empty()){while(!q2.empty()&&!q3.empty()){if(q2.front()>q3.front()){ck++;if(ck%t==0)cout<<q2.front()+q*m<<" ";q2.pop();}else{ck++;if(ck%t==0)cout<<q3.front()+q*m<<" ";q3.pop();}}while(!q2.empty()&&q3.empty()){ck++;if(ck%t==0)cout<<q2.front()+q*m<<" ";q2.pop();}while(!q3.empty()&&q2.empty()){ck++;if(ck%t==0) cout<<q3.front()+q*m<<" ";q3.pop();}return 0;}if(q2.empty()){while(!q1.empty()&&!q3.empty()){if(q1.front()>q3.front()){ck++;if(ck%t==0) cout<<q1.front()+q*m<<" ";q1.pop();}else{ck++;if(ck%t==0) cout<<q3.front()+q*m<<" ";q3.pop();}}while(!q1.empty()&&q3.empty()){ck++;if(ck%t==0) cout<<q1.front()+q*m<<" ";q1.pop();}while(!q3.empty()&&q1.empty()){ck++;if(ck%t==0) cout<<q3.front()+q*m<<" ";q3.pop();}return 0;}if(q3.empty()){while(!q2.empty()&&!q1.empty()){if(q2.front()>q1.front()){ck++;if(ck%t==0) cout<<q2.front()+q*m<<" ";q2.pop();}else{ck++;if(ck%t==0) cout<<q1.front()+q*m<<" ";q1.pop();}}while(!q2.empty()&&q1.empty()){ck++;if(ck%t==0) cout<<q2.front()+q*m<<" ";q2.pop();}while(!q1.empty()&&q2.empty()){ck++;if(ck%t==0) cout<<q1.front()+q*m<<" ";q1.pop();}}
}

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

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

相关文章

26元/月起!腾讯云一键自动搭建4核16G幻兽帕鲁服务器

腾讯云无需任何配置自动搭建幻兽帕鲁游戏联机服务器&#xff0c;游戏24小时在线&#xff0c;4核16G游戏联机服务器低至26元/月起&#xff0c;新手小白也能一键搭建属于自己的幻兽帕鲁游戏联机服务器&#xff01; 第一步&#xff1a;购买游戏联机服务器 购买入口&#xff1a;htt…

Vue3 函数式弹窗优化

背景 前面文章介绍了如何使用 函数式弹窗&#xff0c;弹窗方式是挂载在了全局&#xff0c;使用了getCurrentInstance方法拿到了全局上下文&#xff0c;进而拿到挂载的dialog进行弹窗操作。getCurrentInstance现在已被官方Vue API隐藏&#xff0c;为内部使用函数&#xff0c;现…

Ruoyi-Cloud-Plus_Nacos配置服务漏洞CVE-2021-29441_官方解决方法以及_修改源码解决---SpringCloud工作笔记199

CVE-2021-29441 这个漏洞是Nacos的,通过使用postman,直接访问接口: 就可以直接添加nacos的用户 Nacos是Alibaba的一个动态服务发现、配置和服务管理平台。攻击者通过添加Nacos-Server的User-Agent头部将可绕过(nacos.core.auth.enabled=true)鉴权认证,从而进行API操作。 …

React18-模拟列表数据实现基础表格功能

文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…

c语言:贪吃蛇的实现

目录 贪吃蛇实现的技术前提&#xff1a; Win32 API介绍 控制台程序&#xff08;console&#xff09; 控制台屏幕上的坐标 GetStdHandle GetConsoleCursorInfo CONSOLE_CURSOR_INFO SetConsoleCursorInfo SetConsoleCursorPosition GetAsyncKeyState 宽字符的打印 …

【2024.2.1练习】岛屿个数(15分)

题目描述 题目思路 题目乍一看类似于“水坑个数问题”&#xff0c;是对陆地块进行DFS,上下左右4个方向分别对应了四种状态转移&#xff0c;每块陆地进行搜索后变成海洋&#xff0c;最终搜索次数就是岛屿个数。 但在子岛屿存在的情况下&#xff0c;需要先对海洋块进行DFS,由于…

Python开源项目周排行 2024年第3周

ython 趋势周报&#xff0c;按周浏览往期 GitHub,Gitee 等最热门的Python开源项目&#xff0c;入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后&#xff0c;都是当周相对热门的项目。 入选公式&#xff1d;70%GitHub Trending20%Gitee10%其他 关注微…

【靶场实战】Pikachu靶场敏感信息泄露关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 敏感信息泄露概述 由于后台人员的疏忽或者不当的设计&…

【C/C++】C/C++编程——整型(二)

在 C 中&#xff0c;整型数据可以分为有符号数&#xff08;Signed&#xff09;和无符号数&#xff08;Unsigned&#xff09;&#xff0c;这两种类型主要用于表示整数值&#xff0c;但它们在表示范围和用途方面有所不同。默认情况下&#xff0c;整数类型如 int、short、long 都是…

【疑问】为什么声明和定义要分离

前言 我们在学习的时候接触过一个话&#xff1a;编写自定义函数的时候 要做到声明和定义分离 那么为什么呢 今天就来简单的了解一下 疑问&#xff1a;错误的发生 下面给出两个源文件和一个头文件以及报错信息 text.cc文件 #include"head.h"int main() {int a 1…

共用体与枚举法,链表的学习

结构体注意事项&#xff1a; 1.结构体类型可以定义在main函数里面&#xff0c;但是此时的作用域就被限定在该函数中 2.结构体的的的定义的形式&#xff1a;a.先定义类型&#xff0c;后定义变量-----struct stu s b.定义类型的同时&#xff0c;定义了变量&#xff1a;struct…

由数据插入超长引起的问题——了解GaussDB和openGauss的字符集

前言 故事是这样开始的。我们的小DEMO项目的数据库版本从openGauss 2.1.0升级到了5.0.0版本。升级后进行功能验证的时候&#xff0c;测试同学发现个BUG&#xff0c;原来通过gs_restore导出来的数据再导入时报超长&#xff0c;插入失败了&#xff0c;如下图所示&#xff0c;nva…