CF EducationalRound93 E.Two Types of Spells(权值线段树+堆维护最值)
题意
每个魔法都有自己的伤害,魔法1是加倍魔法,可以加倍后一个魔法的伤害,魔法0是普通魔法,给出q个更新,要求每次更新后计算魔法能造成的伤害最大值。
思路
设加倍魔法数量为k,权值线段树每次查询前k大的伤害和sumk(加倍多出来的伤害),mutiset维护魔法1和魔法2的最值,如果魔法1的最小值比魔法0的最大值大或不存在魔法0,sumk就要改变,因为至多加倍k-1个魔法1。
代码
#include<bits/stdc++.h>
#define ll long long
#define LL lo
原创
2020-08-17 22:14:36 ·
181 阅读 ·
0 评论