首页 > 其他分享 >Codeforces Round 855 (Div. 3) C. Powering the Hero

Codeforces Round 855 (Div. 3) C. Powering the Hero

时间:2023-10-21 21:14:15浏览次数:32  
标签:std 855 Hero Powering 卡堆 装备 数值 英雄 可以

有 \(n\) 张卡的卡堆,你可以自顶向下抽卡。装备卡显示数值为 \(a_i(a_i>0)\) ,英雄卡显示数值为 \(a_i = 0\) 。

如果是装备卡,你可以将卡抽出放在装备堆。如果是英雄卡,你可以将装备堆顶端的一张数值为 \(x\) 的装备卡装备给英雄,英雄数值 \(+ x\) 。无论是否装备,都加入英雄堆。

询问卡堆摸完后,英雄堆中所有英雄的数值最高为多少。

可以使用一个数据结构维护住数值当前最高的的装备卡。

每抽出一张英雄卡,取出当前最高的装备卡,在卡堆的位置为 \(i_k\) 。

于是可以得到 \(i_1, i_2, \cdots, i_k\) 。如果预先可以得到这组位置,就可以把对应的装备卡放入装备堆。

实际上我们只需要计算最终所有英雄的数值,所以不需要保存他们的位置,直接统计出装备数值即可。

具体算法为使用大根堆维护装备,当遇到英雄卡,若堆非空,堆顶的装备加入贡献。

view
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
void solve(){
	int n; std::cin >> n;
	std::priority_queue<int, std::vector<int>, std::less<int> > q;
	ll ans = 0;
	for (int i = 1; i <= n; i++) {
		int x; std::cin >> x;
		if (x) q.push(x);
		else if (!q.empty()) ans += q.top(), q.pop();
	}
	std::cout << ans << '\n';
}
int main() { 
	int _ = 1; std::cin >> _;
	while (_--) solve();
	return 0;
}

标签:std,855,Hero,Powering,卡堆,装备,数值,英雄,可以
From: https://www.cnblogs.com/zsxuan/p/17779550.html

相关文章

  • GoPro HERO12 Black 运动摄像机 All In One
    GoProHERO12Black运动摄像机AllInOne全新HDR视频,电池续航能力显著增强,出色HyperSmooth超强防抖视频稳定功能,众多惊喜等你来探索。5.3K60+4K120分辨率HyperSmooth超强防抖6.0视频稳定功能HDR照片+视频多用途8:7纵横比10米防水电池续航提升高达2倍......
  • Codeforces 1855B:Longest Divisors Interval 最长的连续约数区间
    1855B.LongestDivisorsIntervalDescription:对于一个整数\(n\)\((1\leqn\leq10^{18})\),找到一段最长的区间\([l,r]\),使得区间内所有数均为\(n\)的约数。Analysis:如果\(n\)是一个奇数(非\(2\)的倍数),由于\(odd=odd\timesodd\),则不可能有连续的两个整数均为......
  • 1855 Round 889 (Div. 2)
    DaltontheTeacher给定序列\(a_{1\simn}\),定义一次操作为交换序列中的某两个数,求使得\(\foralli,a_i\not=i\)的最少操作次数对于所有数据,\(n\leq10^5\)计算出\(a_i=i\)的位置数量\(sum\),若\(sum\)为偶数,则让其两两配对交换即可;否则会剩下一个数,在其他......
  • CF1855B Longest Divisors Interval 题解
    原题链接:https://codeforces.com/contest/1855/problem/B题意:给定一个正整数n,找到满足该条件的区间[l,r]的长度的最大值:对于任意l<=i<=r,n均为i的倍数(多组数据)。思路:如果n是奇数,答案显然是1,因为任意两个连续的正整数一定会有一个2的倍数。将这一结论进行推广:......
  • CF1855B Longest Divisors Interval 题解
    题意:给定一个数\(n\),求一个连续区间\([l,r]\)使得\(n\)是区间内每个数的倍数,最大化这个区间的长度(多组数据)。思路:逆向思考一波,(如果一个数\(x\)不是\(n\)的因数,那么\(x\)的倍数不能在区间内。举个例子,比如$n$是13,3不是13的因数,\(3,6,9,12\)也就不可能出现......
  • 传奇引擎区分hero引擎有什么用呢?
    hero引擎是我们很常用的引擎,那么hero引擎有什么用呢? 虽然我们经常使用这款引擎,但其实这个引擎还有很多我们不知道的,今天借助这篇文章,来认真的说说有关herom2引擎方方面面的知识,多多知道的也不多,但知道的,一定尽量全部无私奉献在中国传奇上吧。herom2引擎官方但网上目前有三家网站自......
  • 传奇客户端HeroM2登陆器配置文件说明
    最近一段时间经常有人问我传奇HeroM2登陆器怎么解压到传奇客户端,今天我就来给大家说一下手动编辑!Option.ini文件,编辑后的文件随登陆器一起发布解压到传奇客户端根目录中即可.;以下是!Option中的内容.;此文件需要随登录器一起解压到客户端目录.[Config];任务按钮MissionBtnCaption......
  • 万用表校准仪TD1855多用表校准系统
    应用场景:由交直流电压(DCV/ACV)、交直流电流(DCI/ACI)独立输出且相位可调组成的虚功率标准源,适用于校准交直流功率表。TD1855适用于校准0.5级及以下的直流功率表、有功功率表、无功功率表、视在功率表、工频相位表和功率因数表。用户可选配TD1020电流线圈(50匝),通入20A......
  • 【855】country converter, ISO alpha 3
    Ref:country-converter1.0.0Ref:Python-pycountry|UnderstandHowtoUsepycountryThesetwopythonlibrariesarebothusedtoprocessinformationaboutcountrynames.Forthelibraryofcountry-converter,itcanbeusedtoconvertthedirtydata(coun......
  • hdu 2855(矩阵快速幂)
    题意:计算公式题解:想推出矩阵相乘的形式,想了很久也想不出,然后看别人的题解有一个高中就学过的式子:(1+x)^n=Cn0x^n+Cn1x^(n-1)+Cn2x^(n-2)+Cn3x^(n-3)+····+Cnn然后想到斐波那契矩阵是{1,1,1,0},1看做一个单位阵{1,0,1,0},就会做了。。。#include<stdio.h>#include......