码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 1098D. Eels

时间:2019-02-05 18:12:21      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:定义   lan   force   targe   sub   元素   维护   一个   blank   

题目简述:对一个非空正整数(可重)集合$S$,从中选出两个元素$a, b (a \leq b)$,将他们从$S$中删除并将$a+b$加入$S$,重复这个操作直到$S$中只剩下一个元素为止,称为一次【竞技】。若一次操作中$a \leq b \leq 2a$,则称这次操作是【危险的】。一次竞技的【危险值】为其中【危险的】操作的次数。定义这个集合$S$的【危险值】(记作$\text{danger}(S)$)为:所有可能的竞技的【危险值】的最大值。设一个集合$S$初始为空集,维护以下操作:

1. 插入一个数$1 \leq x \leq 10^9$。

2. 删除一个(已有的)数$1 \leq x \leq 10^9$。

每次操作后,计算$\text{danger}(S)$。

解:code

对$x \in S$,定义$S$中比$x$小的数之和为

$$ f(x) = \sum_{a \in S, a < x} x. $$

令$S$中满足$2f(x) < x$的$x$的个数为

$$t = \sum_{x \in S} [2f(x)<x]. $$

观察1:$\text{danger}(S)=|S|-t$。

CodeForces 1098D. Eels

标签:定义   lan   force   targe   sub   元素   维护   一个   blank   

原文地址:https://www.cnblogs.com/TinyWong/p/10352896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!