D 无限的韵律源点 (STL_set ,*****)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

Arcaea(韵律源点)是一款著名的音乐游戏(以下简称 arc)。在 arc 中,玩家评分 (PTT) 是 total best 和 recent best 两部分分数维护的所有曲目的单曲评分平均值。

recent best 部分维护的,是你当前时刻下最近游玩的前 ra 首曲目 (包含当前时刻下游玩的曲目)中单曲得分最高的前 rb 首曲目;total best 部分维护的,是你当前时刻下所有已经游玩过的曲目中单曲得分最高的前 b 首曲目。你需要计算在你的游玩过程中,recent best 部分维护的曲目得分之和与 total best 部分维护的曲目得分之和的总和最大值。

形式化地说,给定一个正整数序列 ai(1≤i≤n)),设 Ri 表示 amax⁡(1,i−ra+1),⋯,ai​ 中最大的 min⁡(i,rb) 个数之和,设 Ti表示 a1,⋯ ,ai中最大的  min⁡(i,b) 个数之和。对于 1≤i≤n,求 Ri+Ti 的最大值。 

输入描述:

第一行输入四个整数 n,b,ra,rb(1≤rb≤ra≤n≤2×105,1≤b≤n≤2×105)。分别代表您游玩了 n 首曲目;在计算 total best 部分时,取历史单曲评分最高的 b 首曲目;在计算 recent best 部分时,取历史最近 ra 首曲目中单曲评分最高的 rb 首。

第二行输入 n 个整数 ai(0≤ai≤109),代表了您在 n 个时刻内游玩曲目获得的单曲评分 ,输入的顺序就代表了您游玩的顺序。

输出描述:

 

输出一行一个整数,表示所求的总和最大值。

示例1

输入

5 2 3 2
1 6 2 3 3

输出

18

说明

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

用 total 表示已经游玩过曲目的序列;用 recent 表示已经游玩过的曲目中,历史最近 rarara 首曲目的序列。

时刻 [0,5] 的 total 与 recent 部分维护过程如下:

当 t=0,你还没有游玩过曲目,此时 total=[],recent=[],此刻计算得出的 PTT 为 0。

当 t=1,你游玩了第一首曲目,获得的单曲得分为 1,此时 total=[(1)],recent=[(1)],此时的最大总和为 2。

当 t=2,你游玩了第二首曲目,获得的单曲得分为 6,此时 total=[(1),(6)],recent=[(1),(6)],此时的最大总和为 14。

当 t=3,你游玩了第三首曲目,获得的单曲得分为 2,此时 total=[1,(6),(2)],recent=[1,(6),(2)],此时的最大总和为 16。。

当 t=4,你游玩了第四首曲目,获得的单曲得分为 3,此时total=[1,(6),2,(3)],recent=[(6),2,(3)],此时的最大总和为 18。

当 t=5,你游玩了第五首曲目,获得的单曲得分为 3,此时 total=[1,(6),2,(3),3],recent=[2,(3),(3)],此时的最大总和为 15。

由此可知,在时刻 4 计算出的最大总和最大,为 18。

解析:

s:模拟堆,记录最大的 b 个数据

sx:模拟堆,记录最后的 ra 个数中,最大的 rb 个数据

sy:最后的 ra 个数据中不存在 sx 中的数据

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<map>
#include<sstream>
#include<deque>
#include<unordered_map>
#include<unordered_set>
#include<bitset>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<long long, long long> PLL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
const int INF = 0x3f3f3f3f;
const LL Mod = 1e9 + 7;
const int N = 2e5 + 10, M = 4e5 + 10, P = 110;
int n, b, ra, rb;
int ar[N];
multiset<PII>s,sx;
multiset<PII,greater<PII>>sy;

int main() {
	cin >> n >> b >> ra >> rb;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &ar[i]);
	}
	LL sum1 = 0, sum2 = 0;
	LL ans = 0;
	for (int i = 1; i <= n; i++) {
		s.insert({ ar[i],i });
		sum1 += ar[i];
		if (s.size() > b) {
			auto t = *s.begin();
			s.erase(t);
			sum1 -= t.first;
		}

		if (i > ra) {
			int j = i - ra;
			if (sx.count({ ar[j],j })) {
				sx.erase({ ar[j],j });
				sum2 -= ar[j];
			}
			else if (sy.count({ ar[j],j })) {
				sy.erase({ ar[j],j });
			}
		}

		if (sx.size() && ar[i] >= sx.begin()->first) {
			sx.insert({ ar[i], i });
			sum2 += ar[i];
		}
		else {
			sy.insert({ ar[i],i });
		}
		if (sx.size() < rb && sy.size()) {
			auto t = *sy.begin();
			sy.erase(t);
			sx.insert(t);
			sum2 += t.first;
		}
		if (sx.size() > rb) {
			auto t = *sx.begin();
			sx.erase(t);
			sy.insert(t);
			sum2 -= t.first;
		}
		ans = max(ans,sum1 + sum2);
	}
	cout << ans << endl;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DSPy入门:告别指令提示,拥抱编程之旅!

原文&#xff1a;intro-to-dspy-goodbye-prompting-hello-programming 2024 年 2 月 27 日 DSPy框架如何通过用编程和编译代替提示来解决基于LLM的应用程序中的脆弱性问题。 目前&#xff0c;使用大型语言模型(LLMs)构建应用程序不仅复杂而且脆弱。典型的pipelines通常使用pr…

解决“找不到MSVCP120.dll”或“MSVCP120.dll丢失”的错误方法

在计算机使用过程中&#xff0c;遇到诸如“找不到MSVCP120.dll”或“MSVCP120.dll丢失”的错误提示并不罕见。这类问题往往会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。本文旨在详细阐述MSVCP120.dll文件的重要性、其丢失的可能原因&#xff0c;以及解决方法&a…

nginx开启basic认证

basic认证也叫做http基本认证&#xff0c;防止恶意访问 首先用在线网站生成一个叫做htpasswd的账号密码文件。 将生成结果复制到/etc/nginx/htpasswd文件中 在server的location中配置 server { listen 80; server_name a.com;location / { root html;index index.…

2001-2021年上市公司制造业智能制造词频统计数据

2001-2021年上市公司制造业智能制造词频统计数据 1、时间&#xff1a;2001-2021年 2、来源&#xff1a;上市公司年报 3、指标&#xff1a;年份、股票代码、行业名称、行业代码、所属省份、所属城市、智能制造词频、智能制造占比(%) 4、范围&#xff1a;上市公司 5、样本量…

基于TSM模块的打架斗殴识别技术

目 录 1 引言.... 4 1.1 研究背景与意义.... 4 1.2 研究现状综述.... 5 1.3 研究内容.... 6 1.3.1 图像预处理的优化.... 6 1.3.2 TSM模块的应用.... 6 1.3.3 视频分类的设计与实现.... 6 2 关键技术与方法.... 8 2.1 TSM算法与模型选择.... 8 2.1.1 TSM算法原理.... 8 2.1.2 …

深度学习-数据预处理

目录 创建一个人工数据集处理缺失的数据插入对inputs中的类别值或离散值&#xff0c;将NaN视为一个类别对inputs和outputs中的数值类型转换为张量格式 创建一个人工数据集 import os import pandas as pd os.makedirs(os.path.join(.., data), exist_okTrue) data_file os.p…

基于Vue+ElementPlus自定义带历史记录的搜索框组件

前言 基于Vue2.5ElementPlus实现的一个自定义带历史记录的搜索框组件 效果如图&#xff1a; 基本样式&#xff1a; 获取焦点后&#xff1a; 这里的历史记录默认最大存储10条&#xff0c;同时右侧的清空按钮可以清空所有历史记录。 同时搜索记录也支持点击搜索&#xff0c;按…

.NET(C#)连接达梦数据库GUID字段被自动加横线的修复方法

因信创的原因项目需要兼容达梦数据库&#xff0c;今天遇到个比较坑爹的问题&#xff0c;简单记录下解决方案。 数据库存的是这样&#xff1a; 通过DataAdapter.Fill拿出来以后变成了这样 纳尼&#xff1f;谁让你加上这些横杠的&#xff1f;&#xff08;掀桌&#xff09;导致了…

100个实用电气知识

在当今社会&#xff0c;电力作为日常生活和工作中不可或缺的能源&#xff0c;扮演着越来越重要的角色。为了更好地利用电力资源&#xff0c;了解电气知识成为了越来越多人的需求。在电气领域&#xff0c;有很多实用的知识&#xff0c;这些知识对于从事电气工作的人来说是非常重…

Linux系统安全:从面临的攻击和风险到安全加固、安全维护策略(文末有福利)

1. Linux面临的攻击与风险 1.1. Linux系统架构 Linux系统架构解读&#xff1a; 用户之间隔离内核态与用户态之间隔离用户进程一般以低权限用户运行系统服务一般以特权服务运行用户态通过系统调用进入内核态内核对系统资源进行管理和分配 1.2. Linux系统常见安全威胁 1.2.1.…

OSPF认证方式,ISIS简介,ISIS路由器类型

OSPF&#xff1a;转发&#xff0c;泛洪&#xff0c;丢弃

Docker搭建代码托管Gitlab

文章目录 一、简介二、Docker部署三、管理员使用四、用户使用五、用户客户端 一、简介 GitLab是一个基于Git的代码托管和协作平台&#xff0c;类似于GitHub。 它提供了一个完整的工具集&#xff0c;包括代码仓库管理、问题跟踪、CI/CD集成、代码审查等功能。 GitLab的开源版本…

Go语言并发赋值的安全性

struct并发赋值 type Test struct {X intY int }func main() {var g Testfor i : 0; i < 1000000; i {var wg sync.WaitGroup// 协程 1wg.Add(1)go func() {defer wg.Done()g Test{1, 2}}()// 协程 2wg.Add(1)go func() {defer wg.Done()g Test{3, 4}}()wg.Wait()// 赋值…

2024新算法角蜥优化算法(HLOA)和经典灰狼优化器(GWO)进行无人机三维路径规划设计实验

简介&#xff1a; 2024新算法角蜥优化算法&#xff08;HLOA&#xff09;和经典灰狼优化器&#xff08;GWO&#xff09;进行无人机三维路径规划设计实验。 无人机三维路径规划的重要意义在于确保飞行安全、优化飞行路线以节省时间和能源消耗&#xff0c;并使无人机能够适应复杂…

国内首个48小时大模型极限挑战赛落幕,四位“天才程序员”共同夺冠

4月21日晚&#xff0c;第四届ATEC科技精英赛&#xff08;ATEC2023&#xff09;线下赛落幕。本届赛事以大模型为技术基座&#xff0c;围绕“科技助老”命题&#xff0c;是国内首个基于真实场景的大模型全链路应用竞赛。ATEC2023线下赛采用48小时极限挑战的形式&#xff0c;来自东…

Ts支持哪些类型和类型运算(上)

目录 1、元组 2、接口&#xff08;interface&#xff09; 3、枚举&#xff08;Enum&#xff09; 4、字面量类型 5、keyof 6、in keyof 7、类型的装饰 静态类型系统 就是把 类型检查从运行时提前到了编译时&#xff0c;所以ts类型系统中的许多类型与js并无区别 例如&am…

概率图模型在机器学习中的应用:贝叶斯网络与马尔可夫随机场

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

go语言并发实战——日志收集系统(七) etcd的介绍与简单使用

什么是etcd etcd是基于Go语言开发的一个开源且高可用的分布式key-value存储系统&#xff0c;我们可以在上面实现配置共享与服务的注册与发现。 和它比较相似的还有我们之间所提到的Zookeeper以及consul.(注:后面我们学习微服务的时候etcd和consul会有广泛的使用) etcd有以下几…

网络中其他协议

目录 DNS协议 域名简介 ICMP协议 ICMP功能 ICMP协议格式 ping命令 NAT技术 NATP NAT技术的限制 代理服务器 DNS协议 DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;协议&#xff0c;是一个用来将域名转化为IP地址的应用层协议。 为什么有这个协…

W801学习笔记十二:掌机进阶V3版本之驱动(PSRAM/SD卡)

本次升级添加了两个模块&#xff0c;现在要把他们驱动起来。 一&#xff1a;PSRAM 使用SDK自带的驱动&#xff0c;我们只需要写一个初始化函数&#xff0c;并在其中添加一些自检代码。 void psram_heap_init(){wm_psram_config(0);//实际使用的psram管脚选择0或者1&#xff…