U131424 [Arcaea] 查分器

题目背景

**$\text{Welcome to Arcaea!}$** $\text{EdisonBa}$ 担任 $\text{Arcaea}$ 的查分任务。但是,每天有 $\infty$ 位选手需要查分,由于 $\text{EdisonBa}$ 的查分器太蒻了,他请你来帮忙给这些选手查分。 ##### $\text{Update}$: 2020.12.2 重造数据,2021.11.12 题面最下方添加参考标程。

题目描述

在 $\text{Arcaea}$ 中,每一首单曲都有几张铺面(谱面)。一张铺面总是由 $n$ 个单键 ($\text{Note}$) (物量)组成。当你用手击打每个单键时,这个单键会且仅会产生一种判定。一个单键产生一次判定时会得到单个键的分数。结束一张铺面之后,就能得到这次练习的总分(结算分数)。 同样地,一张铺面根据难度不同,有一个相应的铺面定数。一张铺面的定数是这张铺面特有的不变量。当你练习完毕,即击打完这一铺面的所有按键之后,根据你的结算分数和铺面定数,可以计算出本次练习的潜力值($\text{Potential}$,简称$\text{ptt}$)。 具体计算方式见下面叙述。 #### 判定 - $\text{Arcaea}$ 的判定分为 $\text{Pure}$,$\text{Far}$ 与 $\text{Lost}$ 三种,其中 $\text{Pure}$ 分为 大 $\text{Pure}$ 和 小 $\text{Pure}$ 。 [![Play hit pure.png](https://wiki.arcaea.cn/images/thumb/9/95/Play_hit_pure.png/50px-Play_hit_pure.png)](https://wiki.arcaea.cn/index.php/文件:Play_hit_pure.png) [![Play hit far.png](https://wiki.arcaea.cn/images/thumb/d/d7/Play_hit_far.png/50px-Play_hit_far.png)](https://wiki.arcaea.cn/index.php/文件:Play_hit_far.png)[![Play hit lost.png](https://wiki.arcaea.cn/images/thumb/1/14/Play_hit_lost.png/50px-Play_hit_lost.png)](https://wiki.arcaea.cn/index.php/文件:Play_hit_lost.png) - 大 $\text{Pure}$:单键判定时间前后 $25ms$ 以内 - 小 $\text{Pure}$:单键判定时间前后 $50ms$,并且不满足大 $\text{Pure}$ 的条件。 大 $\text{Pure}$、小 $\text{Pure}$ 的叫法仅为称呼方便,实际练习中 $\text{Pure}$ 的显示大小没有区别。 - $\text{Far}$:单键判定时间为前后 $100ms$,并且不满足 $\text{Pure}$ 的条件。显示为音符处的黄色 $\text{FAR}$ 。 - $\text{Lost}$:在前后 $100ms$ 内未击中或提前 $100\sim 120ms$ 击中单键。显示为音符处的红色 $\text{LOST}$ 。$\text{Lost}$ 会导致断连。 - 若练习一张谱面时,每个音符都得到 $\text{Pure}$(不管是 大 $\text{Pure}$ 还是 小 $\text{Pure}$),最终将得到 $\text{“Pure Memory”}$(简称 $\text{PM}$)评价。 #### 计分方式 计分方式分为基本分和判定附加分两部分 - 基本分:满分为 $10000000$,单个 $\text{Note}$ 的分数为 $(10000000 \div 谱面 \text{Note} 总量)$,游玩过程中每个 $\text{Pure}$ 判定可以获得完整的单键分数,$\text{Far}$ 获得一半的单键分数,$\text{Lost}$ 不得分。 - 判定附加分:每个 大 $\text{Pure}$ 会额外加 $1$ 分,其他判定均不加分,附加分无上限。拿到所有附加分时,即成绩为$(10000000+谱面 \text{Note} 总量)$时的成绩成为理论值。 #### 单次成绩 $\text{ptt}$ 计算 单次成绩 $\text{ptt}$ 与分数的关系为: ![](https://cdn.luogu.com.cn/upload/image_hosting/e5f4ky5p.png) 一些特殊点见下: | 分数 | 单次成绩 $\text{ptt}$ | | :--------: | :-----------------------: | | $>10,000,000$ | 定数$+2.00$(忽略物量影响) | | $10,000,000$ | 定数$+2.00$ | | $9,900,000$ | 定数$+1.50$ | | $9,800,000$ | 定数$+1.00$ | | $9,500,000$ | 定数 | | $9,200,000$ | 定数$-1.00$ | | $8,900,000$ | 定数$-2.00$ | | $8,600,000$ | 定数$-3.00$ | | $

输入格式

输入共两行。 第一行是一行字符串,为该曲目的名称,其中可能包含空格。 第二行有 $4$ 个数字。分别为总 $\text{Pure}$ 数量 $p$,大 $\text{Pure}$ 数量 $a$,$\text{FAR}$ 数量 $b$,$\text{LOST}$ 数量 $c$ 和铺面定数 $d$。 其中,$p,a,b,c$ 为四个非负整数$(a\leq p)$,$d$ 为一位小数$(0\leq d \leq 15 )$。 输入数据保证单曲物量不会超过 $2200$ ,即不会出现没有 $\text{PM}$ 但是结算分数超过 $10000000$ 的情况。

输出格式

输出共两行。 第一行为结算时的分数,共八位数字,不足八位需要补零。 第二行为本次练习的 ptt,须保留两位小数。 具体请见样例及样例解释。

说明/提示

#### 数据特殊范围 **注:本题测试采用子任务捆绑测试,一个子任务中的测试点必须全部通过才能得到该测试点相应的得分.** | 子任务编号 | 满足性质 | 分值 | | :--------: | :----------------------: | :--: | | $1$ | 没有击打任何 $\text{Note}$ | $10$ | | $2$ | 所有的 $\text{Pure}$ 均为 大 $\text{Pure}$ | $15$ | | $3$ | $\text{PURE MEMORY}$ | $15$ | | $4$ | 结算时单曲 $\text{ptt}$ 为 $0.00$ | $15$ | | $5$ | 保证歌曲的名称中没有空格 | $20$ | | $6$ | 无特殊限制 | $25$ | **提示**:在 $\text{C++}$ 中,截掉小数部分可以把浮点数强制转换为整形;保留两位小数且四舍五入可以使用 `%.2f` 。 #### [参考标程 C++ / Python3](https://www.luogu.com.cn/paste/d69x2wna) #### 相关链接 + [$\text{Arcaea}$ 官网](https://arcaea.lowiro.com)