CF662E To Hack or not to Hack

题目描述

考虑一个典型的 Codeforces 比赛,共有三个题目,并采用动态计分规则。 你已获得一张几乎最终的积分榜。对于每一位参赛者(包括你自己),每道题的通过提交时间都已给出,并且对于每份解答,你是否能够攻击该解答也已知晓。唯一可能在比赛结束前更改积分榜的行为就是你发起的攻击。 你最终可能获得的最好名次是多少? 更严格地说,$n$ 名参赛者参与了本次比赛(包括你)。对于任意一道题,若该题最终有恰好 $k$ 人通过,则该题的最高得分定义如下: 1. 如果 $n < 2k \le 2n$,最高得分为 $500$; 2. 如果 $n < 4k \le 2n$,最高得分为 $1000$; 3. 如果 $n < 8k \le 2n$,最高得分为 $1500$; 4. 如果 $n < 16k \le 2n$,最高得分为 $2000$; 5. 如果 $n < 32k \le 2n$,最高得分为 $2500$; 6. 如果 $32k \le n$,最高得分为 $3000$。 设某题的最高得分为 $s$。如果某选手未通过该题(或其解答被攻击),则该题得 $0$ 分;若其在比赛开始后 $t$ 分钟通过该题(且解答未被攻击),则其得到 $$ \text{score} = \text{int}(s \cdot (1 - 0.004t)) $$ 分(取整下取值)。 参赛者的总得分等于他在三道题获得的分数之和,加上每成功攻击一次获得的 $100$ 分(攻击只由你完成)。 最终你的名次等于严格分数高于你的人数加一。

输入格式

第一行输入一个整数 $n$($1 \le n \le 5000$),表示参赛者人数。你是第 $1$ 位参赛者。 接下来的 $n$ 行,每行包含三个整数 $a_i$, $b_i$, $c_i$,表示第 $i$ 位参赛者的三道题的结果。若 $a_i=0$,说明第 $i$ 位选手未通过第一题;若 $1 \le a_i \le 120$,说明第 $i$ 位选手在比赛开始后 $a_i$ 分钟通过了第一题,且你无法攻击该解答;若 $-120 \le a_i \le -1$,说明该选手在 $-a_i$ 分钟通过第一题,且你可以攻击该解答。$b_i$、$c_i$ 同理,分别表示第二题和第三题的结果。 保证 $a_1$,$b_1$,$c_1$ 均为非负数。

输出格式

输出一个整数,表示你最终可能获得的最好名次。

说明/提示

请参考第一个样例。如果你不攻击任何解答,你将赢得比赛(左边的积分榜);但如果你攻击第三位选手第一题的解答(你唯一能攻击的),则第一题的最高分变动,最终你排名第二(右侧的积分榜)。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF662E/5765f099578b08c48d176367f91619eb7bde0b71.png) 由 ChatGPT 5 翻译