[Arcaea] 查分器

传送门 luogu U131424

题目背景

(Welcome ~ to ~Arcaea!)

EdisonBa 担任 (Arcaea) 的查分任务。但是,每天有 (∞) 位选手需要查分,由于 EdisonBa 的查分器太蒻了,所以,他请你来帮忙给这些选手查分。

注:本题题目描述较为复杂。如果你的时间很紧张,请跳过这道题。实际上,本题的难度在红题到橙题之间。

Update:2020.12.2 因为之前的数据过于卡人,所以重新造了数据,确保你不会爆零。

题目描述

  • (Arcaea) 中,每一首单曲都有一张铺面(谱面)。一张铺面总是由 (n) 个单键 (Note) (物量)组成。当你用手击打每个单键时,这个单键会且仅会产生一种判定。一个单键产生一次判定时会得到单个键的分数。结束一张铺面之后,就能得到这次练习的总分(结算分数)。

    同样地,一张铺面根据难度不同,有一个相应的铺面定数。一张铺面的定数是这张铺面特有的不变量。当你练习完毕,即击打完这一铺面的所有按键之后,根据你的结算分数和铺面定数,可以计算出本次练习的潜力值(Potential,简称ptt)。

    具体计算方式见下面叙述。

    判定

    • Arcaea的判定分为 Pure,Far 与 Lost 三种,其中 Pure 分为 大Pure 和 小Pure 。

      Play hit pure.png Play hit far.pngPlay hit lost.png

    • 大Pure:单键判定时间前后25ms以内

    • 小Pure:单键判定时间前后50ms,并且不满足大Pure的条件。

      大Pure、小Pure的叫法仅为称呼方便,实际练习中Pure的显示大小没有区别。

    • Far:单键判定时间为前后100ms,并且不满足Pure的条件。显示为音符处的黄色 FAR 。

    • Lost:在前后100ms内未击中或提前100-120ms击中单键。显示为音符处的红色 LOST 。Lost 会导致断连。

    • 若练习一张谱面时,每个音符都得到 Pure(不管是 大Pure 还是 小Pure),最终将得到 “Pure Memory”(简称PM)评价。

    计分方式

    计分方式分为基本分和判定附加分两部分

    • 基本分:满分为10000000,单个 Note 的分数为(10000000/谱面Note总量),游玩过程中每个 Pure 判定可以获得完整的单键分数,Far 获得一半的单键分数,Lost 不得分。
    • 判定附加分:每个 大Pure 会额外加1分,其他判定均不加分,附加分无上限。拿到所有附加分时,即成绩为(10000000+谱面Note总量)时的成绩成为理论值。

单次成绩 (ptt) 计算

单次成绩 ptt 与分数的关系为:

一些特殊点见下:

分数 单次成绩 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

单次成绩 ptt 下限为 0。即如果定数是 1.00,你打了非常低的分数,单曲 ptt 不会变成负数。

  • 注意1:在计算分数过程中请全程使用小数形式 (double)计算,最后的总分直接截掉小数部分,最终化为整数时请不要四舍五入
  • 注意2:计算 (ptt) 过程中也使用小数形式 (double)计算,但最后的 ptt 需要四舍五入,保留两位小数

输入格式

输入共两行。

第一行是一行字符串,为该曲目的名称,其中可能包含空格。

第二行有4个数字。分别为总 Pure 数量 (p),大 Pure 数量 (a),FAR 数量 (b),LOST 数量 (c) 和铺面定数 (d)

其中,(p,a,b,c) 为四个非负整数((aleq p)),(d) 为一位小数 ($0leq d leq 15 $ )。

输入数据保证单曲物量不会超过 2000 ,即不会出现没有 PM 但是结算分数超过 10000000 的情况。

输出格式

输出共两行。

第一行为结算时的分数,共八位数字,不足八位需要补零。

第二行为本次练习的 ptt,须保留两位小数。

具体请见样例及样例解释。

输入输出样例

输入 #1

Tiferet
1081 984 3 2
10.0

输出 #1

09968755
11.84

输入 #2

dropdead
44 43 0 0
1.0

输出 #2

10000043
3.00

输入 #3

chronostasis
777 666 84 55
9.1

输出 #3

08941714
7.24

输入 #4

inkar-usi
0 0 1 462
7.5

输出 #4

00010799
0.00

说明/提示

数据特殊范围

注:本题测试采用子任务捆绑测试,一个子任务中的测试点必须全部通过才能得到该测试点相应的得分.

子任务编号 满足性质 分值
1 没有击打任何 Note 10
2 所有的 Pure 均为 大Pure 15
3 PURE MEMORY 15
4 单曲 ptt 为 0.00 15
5 保证歌曲的名称中没有空格 20
6 无特殊限制 25

样例1得分解释:

某玩家在一次练习的时候打出了 1081个 Pure ,(在这 1081Pure 中有 984 大Pure),3Far,2Lost 的成绩。可计算出该谱面物量 (n) 为1086。Pure 每个音符得分为 9208.103,总分即为

1086×? + 3×0.5×? + ? = 9968755.639
"?" 部分请选手自行思考。

截掉小数部分,得分显示为 09968755。

  • 提示:在 (C)++ 中,截掉小数部分可以把 double 形式的数强制转换为 int ;保留两位小数且四舍五入可以使用 .2f 。

由于 ptt 的计算比较容易,请各位自行计算。

附件下载

arc22.in 35B

arc22.out 14B

原文地址:https://www.cnblogs.com/EdisonBa/p/13932219.html